🐈
命名のコツ
クリーンコードのメモ。
良い名前付けのためのルール
意図を明確にする
- なぜそれが存在するか、何をするか、どのように利用するか、がわかる名前にする
- コードの外側にあるコンテキストがわかるようにする
偽情報を避ける
- 意図した意味とは違う用途で使われる言葉を避ける(配列でないものにlistとつける)
- ごく一部のみが異なる名前をつけない。見間違える。
意味のある対比を行う
- 意味を持たない単語、数字をくっつけない
- ProductData, ProductInfoというクラスがあっても、違いがわかりにくく、情報がない
- a1, a2, a3のような変数には、何の情報もない
- 変数名を分ける理由を考えて適切な名前をつける
発音可能な名前をつける
- コミュニケーションの妨げになるので、アルファベットを1文字ずつ読み上げなければならないような名前を避ける
検索可能な名前を用いる
- 後から検索が必要になりそうな名前は検索できるような名前にする
- スコープがごく小さければ検索することはほぼ無いので1文字の変数名でよいが、スコープが大きければ検索するときのことを想定するべき
エンコーディングを避ける
ここよくわからなかった
ハンガリアン記法を避ける
- ハンガリアン記法(変数名に型を含める)は無駄に冗長になるだけなのでやめる
メンバープレフィクスを避ける
- メンバー変数にプレフィクスをつけなくても良いくらいのクラスのサイズにする
インターフェースと実装
- インターフェースに
I
をつけるのをやめて、実装の方にImp
をつける- 利用する側から見えるのはインターフェースの方なので、それがインターフェースとわかる主張する必要はない
メンタルマッピングを避ける
- コードを読みながら、名前を変換しないと行けないような名前をさける
- 問題領域で使われている言葉を使う
クラス名
- 名詞や名詞句をつける
メソッド名
- 動詞や動詞句をつける
気取らない
- 一部の人にしか伝わらないような名前にしない
1つの概念には1つの単語
- 1つの概念を表すのに、1つの単語を使い続ける
ごろ合わせをしない
- すでに使われている単語を、別の作用を持つものに使用しない
解決領域の用語の使用
- 解決領域(プログラミング)の用語は積極的に使う
- 解決領域の用語で表現できるなら、問題領域の言葉は使わなくて良い。コードを見るのはプログラマだから。
問題領域の用語の使用
- プログラミングの概念で表せないのなら、問題領域から名前を持ってくる。
意味のある文脈を加える
- 深い関係にあるものは、共通のプレフィックスを付けたり1つのクラスにまとめたりして、関係の深いものであることが分るようにする
まとめ
- 良い名前をつけることで、文化的背景を伝えられる
- 文化的背景が分るとコードが読みやすくなる
参考文献
Robert C.Martin, Clean Code アジャイルソフトウェア達人の技, KADOKAWA.
Discussion