伝わらない命名をしない
伝わらない命名をしない
- 名前はとても大事なものです、ロジックに反した名前を付けてしまうとレビュアーは?となります
- 『プログラマが知るべき97のこと』の日本語訳版でmatzさんも寄稿されていましたね
どうやるか?
- Google翻訳を使わない
- 本質的な名前を導き出す
- それを表現するべき単語があればそれを採用する
- 中学生で習う英語を思い出しましょう、長いものでもSVOCやSVOOです
- 誰が(S)の部分はおそらく現代のプログラミングであればクラスとして省略可能です
- つまり、我々が表現すべきなのはVOCやVOOの部分であるべきです
主語を明確にする
- 先の項で述べたS(主語=誰)が主体です
- まず、これを明らかにしないことは責務に取り組むことが出来ていない証左です
- 誰が、何に対しての責務を持っているのかを設計段階で明らかにしておきましょう
それが何をするのかを明確にする
- 主語は決定しました
- 次はV(動詞)を決定しましょう
- あなたの関数は主語が行う何らかの動作を行うものです
- 関数名の先頭には動詞を持ってきましょう、それが全てです
- また、プロジェクトメンバーの同意が取れるのであれば、引数が目的語や補語となるとなおよいですね
冗長な名前を用いない
- 主語が明らかになれば、あとは振る舞いを決定するだけです
- 主語を表す単語がメソッド名に現れることは不要な複雑さを生み出します
- これらはあなたのコードを読む人間を混乱に陥れる罠ともなります(別の主語がそれを使うなど)
変数名はどうか?
- クラスとその振る舞いが決定すれば、端的な名前を付けてあげることは容易になったはずです
- 端的に、本質的な名前を付けられる様に日々努力しましょう
伝えたいこと
- S(誰が)をクラスとして扱える様にする
- V(何をするのか)をメソッド名の先頭にもってくる
- O(目的語)やC(補語)はそれらを補完するだけのものである
- これらの命名がしっかりとできれば変数名の命名はそれに従うだけとなる
- 主語(クラス)と同じ単語が出現する様なメソッド名は冗長である
- 私は英語学の研究者の卵だったこともあり、このあたりは出来ていないなと思うコードによく出会います
- その原因の多くは正しくその変数や関数の正体を見極めていない命名にあります
- 直訳は正しい認識を阻害します。正体を見極めすべき命名を正しく行いましょう