どうも、プログラムを最近たくさん書いている慎史です。さて今回はリーダブルコードの第2章のまとめをざっくりとやっていきたいと思います。
結論は「変数や関数の名前を見ただけで情報を読み取れるように、名前をつけることが重要!」です。
【リーダブルコードまとめ】第2章:名前に情報を盛り込む
名前に情報を盛り込むときの注意点
名前を見ただけで情報を読み取れるようにすること!
明確な単語を選ぶ
名前に情報を盛り込むためには、明確な単語を使わないといけません。例えばGetなどではなく、状況に応じてFetchやDownloadなどを使うことです。
ポイントは類義語辞典です。例えばGetにしても、類義語辞典を調べてみると、よりよくその変数の振る舞いを表している言葉に出会うことができるはず。
汎用的な名前は避ける
特によく使われる名前は避ける必要があります。例えばtmpやretvalのような名前です。なぜならこの名前にはほとんど情報が入っていないからです。名前をつける場合は、変数の値を表すような名前を使います。
ただしtmpなどの名前も、明確な理由があれば使ってOKです。例えば変数としてのスコープが短くて、一時的な保管が最も大切な変数に使うのであれば、文句なくtmpがいい名前になります。
抽象的な名前より、具体的な名前を使う
変数でも関数でも、構成要素の多い名前は抽象的なものではなく、具体的にした方がいいです。
例えばServerCanStart()よりCanListenOnPort()の方が明確な名前です。
接尾辞や接頭辞を使って情報を追加する
名前は短いコメントのようなものです。
例えばミリ秒を表す変数名には、後ろにmsをつけるとか、これからエスケープが必要な変数名には、前にraw_をつけるとか。こうすることで名前により具体的な情報を与えることができます。
名前の長さを決める
スコープの大きな変数には長い名前をつけることがポイントです。
例えばスコープが数ページに及ぶような場合は、変数に1~2文字の短い暗号めいた名前をつけてはいけません。短い名前はスコープが数行の変数につける方がいいです。
名前のフォーマットで情報を伝える
大文字やアンダースコアなどに意味を含めるという方法もあります。
例えばクラスのメンバ変数にアンダースコアをつけて、ローカル変数と区別するなどといったことです。これは会社や組織によって違うと思いますので、それを踏襲するのがいいと思います。