川のブログ

川の適当気ままなブログです。 

リーダブルコードを読む part3

こんにちはかわです。

アドベントカレンダー18記事目書いていきます。

前回の続きです。

kawakawa.hatenablog.com

3章 誤解されない名前

名前が「他の意味と間違えられることはないだろうか?」と自問自答する

 

1 と 2

誤解を招く名前は変更する

例:Clip(text, length)

def Clip(text, length)
  ・
  ・
  ・

このままだと

  • 最後からlength文字を削除
  • 最大length文字まで切り詰める

のかわからない

疑問を抱かせる名前はだめ

max_charsにすると効果的

3 限界値を含めるときはminとmaxを使う

限界値を明確にするため、名前の前に

max_

min_

をつける

4 範囲を指定するときはfirstとlastを使う

範囲を指定する際に「start」「stop」を使うことがあるが、

stopは複数の意味に解釈される事がある。

包含的な範囲(終端を範囲に含める)なら、firstとlastを使う方がいい

5 包含/排他的範囲にはbeginとendを使う

プログラミングの命名規則では、包含/排他的範囲にbegin endをよく使う

endは少し曖昧だが、英語にはこれに置き換わる語がない(らしい)

beginとendを使うことが最善であるらしい

6 ブール値の名前

ブール値の変数やブール値を返す関数の名前を選ぶ際は、

true falseを明確にすべし

trueかfalseのどちらが正しいかをそれとなくにおわせる必要がある

is や hasを使いブール値だとわかるようにする

否定形は避ける

7 ユーザの期待に合わせる

ユーザが先入観を持っているために誤解を招くことがあるため、

誤解されない名前に変更する必要がある。

例としてget*()をあげると、

コストが低いものだという先入観がある(らしい)。

もしコストが高いのであればこれを明示される名前に変えるべき。

8 例:複数の名前を検討する

名前を決めるときは、複数の候補を検討すべし

最善の名前とは、誤解されない名前である

以上

kawakawa.hatenablog.com