Closed kaito0046 closed 5 years ago
「コードは他の人が最短時間で理解できるように書かなければならない」
Get => 状況や対象に応じてFetch, Downloadなどを選ぶ
tmpやretvalなど。ただし明確な理由があれば別(「その変数が一時的なものである」という、名前通りの意味しか持たない場合など)
その対象の動作や役割を端的に表す名前をつける。 例:ServerCanStart() => CanListenOnPort()
変数の意味を意識していないとバグを誘発する箇所には補足情報を追加する。 例:値の単位(byte, ms, secs)、エンコード前後のURL, エスケープ前後の文字列など
スコープの大きさによって変える。影響範囲の広い変数に1~2文字の暗号めいた名前をつけてはいけない。
略
例1:filter => あいまいで解釈の余地がある。選択と除外のどちらかによってselect, excludeなどにすべき 例2:Clip(text, length) =>
限界値を含めるならばmax, min を使う
first, lastを使う
begin, endを使う
読みやすさの基本定理
「コードは他の人が最短時間で理解できるように書かなければならない」
命名について
名前に情報を詰め込む
明確な単語を選ぶ
Get => 状況や対象に応じてFetch, Downloadなどを選ぶ
汎用的な名前を避ける(あるいは、使う状況を選ぶ)
tmpやretvalなど。ただし明確な理由があれば別(「その変数が一時的なものである」という、名前通りの意味しか持たない場合など)
抽象的な名前よりも具体的な名前を使う
その対象の動作や役割を端的に表す名前をつける。 例:ServerCanStart() => CanListenOnPort()
名前に情報を追加する
変数の意味を意識していないとバグを誘発する箇所には補足情報を追加する。 例:値の単位(byte, ms, secs)、エンコード前後のURL, エスケープ前後の文字列など
名前の長さを決める
スコープの大きさによって変える。影響範囲の広い変数に1~2文字の暗号めいた名前をつけてはいけない。
名前のフォーマットで情報を伝える
略
誤解されない名前をつける
関数の動作を端的に表現する
例1:filter => あいまいで解釈の余地がある。選択と除外のどちらかによってselect, excludeなどにすべき 例2:Clip(text, length) =>
限界値を含める時
限界値を含めるならばmax, min を使う
範囲を指定する時
first, lastを使う
排他的範囲
begin, endを使う
ブール値の表現