12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

変数名、クラス名、メソッド名などで困ったときに辿る命名フロー

Last updated at Posted at 2020-11-01

コードを書いていて、変数名やメソッド名で悩むことが多々あります。
この記事は、自分がいつも辿る命名までのフローを超簡単に、メモ的にまとめてみたものです。

1.何をする処理なのかを自分で把握する

ここで命名フローのほぼ90%が終わると思います。筆者はまず定義箇所に、日本語で何をする処理なのかをコメントで記述します。

ここで、筆者が気をつけていることは、なるべく具体的に書き出すということです。

// 都道府県、市区町村部分のスラッグ(slug)を元にURLを作成する

2.参考情報を漁る

何をする処理・ものに名前をつけるのかがまとまったところで、次は他力本願です。

全てに共通する決まったお作法というものはないと思いますが、例えばメソッドでは

  • 動詞・助動詞を用いて命名する

  • 真偽値を返す場合、オブジェクトが期待する状態になっているかどうかisを使う、期待するデータ・プロパティを持っているかどうかhasを使う

...など、そのメソッドを使う人達が名前からどんなことをするか理解できるようにするためには、ある程度ルールにのっとった命名が求められます。
中学生の英語じゃないか!と言われそうですが、案外自分一人で即座に適切な命名ができません(少なくとも筆者は)。

ネットには、先人がまとめた上手く命名するための良質な情報がたくさんあります。
命名対象が何をする処理なのかは1,で把握しているので、↓の参考記事を調べつつ、適切な単語を探します。

2.1.クラスの命名に関する参考記事

うまくクラス名を付けるための参考情報

2.2.メソッドの命名に関する参考記事

うまくメソッド名を付けるための参考情報

2.3.命名全般に関する参考記事

モデルやメソッドに名前を付けるときは英語の品詞に気をつけよう

3.命名候補が世界中でどの程度ポピュラーなのかを調べる

プログラムのネーミングに迷ったら GitHub でコード検索すると参考になる説

筆者の場合は、GitHub上で自分の考えたネーミングがどのぐらい使われているかを調べるツール(↑の記事中で紹介されている)を使っています。
https://github.com/kyoshidajp/ghkw

4.コーディングスタイルに適合しているかチェック

あとは、キャメルケース or スネークケース or ケバブケースなど、言語・プロジェクトのコーディングスタイルに適合した記述かどうかをチェックします。
linter などの静的解析ツールが整備されてあれば、指摘・自動的に修正される部分ですが、念のためチェック。

5.チームメンバーに相談する

おそらく、この段階で名詞以外の品詞の部分に関しては、大丈夫なはずです。最終的な命名候補が決まったら、チームメンバーに相談してみましょう。事業ドメインによっては、適切な命名が変わってくる場合もあります。

結局、命名した変数や関数・クラス名を読むことになるのは一緒に開発をしているチームメンバーです。
1回相談してみて、チームメンバーにとってわかりやすいものかどうかを判断してもらうことが確実でしょう。

雑記

命名について調べていると、筆者は今まで知らなかったのですが日本語を入力するとネーミングを生成してくれるサービス、というものがありました。

こういったツールを用いることも1つの選択肢だと思います。

参考資料

12
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?