第2章:名前に情報を埋め込む
概要
本章のメインテーマは、「見ただけで情報を読み取れるような変数を命名することが重要」ということです。そして、それは以下の6つのテーマに沿って解説してくれている。
・明確な単語を選ぶ
・汎用的な名前を避ける
・抽象的な名前よりも具体的な名前を使う
・接頭辞や接尾語を使って情報を追加する
・名前の長さを決める
・名前のフォーマットで情報を伝える
まとめ
・コードを読む人が考えなくても見ただけでその変数や関数が何を指しているのかを理解できるように命名をする。
・TPOを弁えて命名する。
・変数名をつけることを習慣化していく。
学んだ点
・名前は、短いコメントと考え、名前に情報を詰め込む。
・変数の意味を考えるコスト削減をする。
例えば、「GetPage」のような変数をつけても、「get」自体がどこからpageを取ってくるのかわからない。そのため、downloadPageやfetchPageの方がわかりやすい。加えて、変数に「Size」のような単語を用いても、何のsizeなのかを考えなければならず、非常に無駄。
・類似事典を用いてTPOに合った単語を用いる。明確で正確な単語を用いる必要がある。
・エンティティの値や目的を表した名前を変数につける。
・tmpという名前は、生存期間が短くて、一時的な保管が最も大切な変数にだけ使う。
・少しでも時間を使って良い名前を考える習慣をつけるようにすれば、すぐに「命名力」が高まるので、怠慢に簡単な意味のない名前を変数につけない。
・変数や関数などの構成要素の名前は、抽象的ではなく具体的なものにする。
・もし絶対に知らせなければいけない大切な情報がある場合は、「単語」を変数名に追加する。
・情報を変数名に追加した方がいいものがある。特にセキュリティのバグのような深刻な被害が出そうなものに使うべき。例えば、password→plaintext_password comment→unescaped_comment html→html_utf8 data→data_urlenc
・スコープが小さければ、短い名前でもいい。もちろん、スコープが大きければ、名前に十分な情報を詰め込んで明確にする必要がある。
・不要な単語を投げ捨てる。例えば、ConvertToString()をToString()で理解できるので後者で十分。
感想と振り返り
開発中に新たに変数を爆誕させる際に、「レビューしてくださる方がどのように解釈するか?」や「考えなくても理解できる変数か?」ということを念頭に入れて効率のいい(理解するのに時間をかけない)変数を命名すべきだと学べた。
少し話は変わるが、僕自身UILabelの変数を命名する際に~Labelとせずにレビューに出してしまった。少し考えたら、~Labelとすることで「この変数は何かのLabelのことを指す変数である」ということを見ただけで判断してもらうことができたよね。そのような小さな積み重ねですね。