概要
リーダブルコードの変数の命名法について書かれている部分を読んだ覚書です。
特に、「カラフル」な単語を使用するの章に関しては、よく用いられる単語の代わりとなるより具体的な情報を含む単語をまとめているので参考になればと思います。
良い変数の名前とは
変数の命名法として重要なのが、
- その変数の情報、役割を含む
- 誤解されない名前を使用する
以上二つあり、それを達成するために気をつけることとして、
- 「カラフル」な単語を使用する
- 汎用的な名前を避ける
- 名前に情報を追加する
これらを達成する名前を使用することで、
名前に情報を詰め込まれ、変数が短いコメントとしての役割をもつようになります。
以上の項目について以下で簡単に解説していきます。
「カラフル」な単語を使用する
広い意味を持つ単語ではなく、明確かつ正確な意味を持つ単語を選ぶことで変数の役割を明示する
単語 | 代替案 |
---|---|
send | deliver, dispatch, announce, distribute, route |
find | search, extract, locate, open |
start | launch, create, begin, open |
make | create, set up, build, generate, compose, add, new |
stop | kill, pause |
get | fetch, download |
本サイトの方が詳細で参考になります!!
汎用的な名前を避ける
tmp, retval, fooやi, j, kのような名前は汎用的であるが、その名前からは目的や値を判断することができない。ただし明確な理由がある場合は例外。
- tmpではなくtmp_fileとすることで何を一時的に保管したいのかを明確にする
- retvalではなくその戻り値がどのような値を持つのかが明確な名前を使用する
- インデックスやイテレータに単にi, j, kを使用するのではなく、club_i, menbers_i, users_iまたはci, mi, uiなどの情報を加えることでインデックスに説明を付与する。
名前に情報を追加する
以下のような情報を加えて名前を具体的にすることで、関数のメソッドや、変数がとりうる値を明確にする。
- 値の単位を追加する
size, limitではなくsize,_mb, max_kbps - 値の属性を追加する
comment, passwordではなくunescaped_comment, plaintext_password
その他気をつけたほうがいいこと
- 頭文字などを用いた独自の省略を避ける
- BEManagerではなくBackEndManager
- eval, doc, strなど汎用的な省略は例外
- 不要な単語は投げ捨てる
- ConvertToString()はToString()としても必要な情報は損なわれない
- DoServerLoop()をServerLoop()にするのも同様
-
CamelCase(キャメルケース)やlower_separated(小文字をアンダースコアで区切ったもの)を言語やプロジェクトのフォーマット規約に従って有効に使用する。
-
HTMLにおける有力な規則の例
<!-- idの区切り文字にはアンダースコア、classの区切り文字にはハイフンを使用する --> <div id="middle_column" class="main-content"> ... </div>
-
JavaScriptにおける有力な規則の例
-