『リーダブルコード』読書メモ 第1章・第2章

理解しやすいコード

  • コードを書く上で最も重要なコンセプト:コードは理解しやすくなければいけない
  • 読みやすさの基本定理:コードは他の人が最短時間で理解できるように書かなければいけない

名前に情報を詰め込む

明解な単語を選ぶ

Webページを取得するなら、getPage()よりfetchPage()やdownloadPage()の方が明確

tmpやretvalのような汎用的な単語を避ける

  • tmp という名前は、生存期間が短くて、一時的な保管が最も大切な変数にだけ使う
  • ループイテレータ(i,j,k等)は使ってもよいが、複数ある場合はそれぞれに意味のある名前をつけるべき
  • tmp・it・retval のような汎用的な名前を使うときは、それ相応の理由を用意しよう

抽象的な名前よりも具体的な名前を使う

DISALLOW_EVIL_CONSTRUCTORS → EVILがどういう意味か分からない → DISALLOW_COPY_AND_ASSIGN

–run_locally → –extra_logging と –use_ local_database の2つに分割

直交する概念は無理に 1 つにまとめようとせずに、別々に使えるようにするといい。

名前に情報を追加する

  • 変数名に値の単位を入れる:delay_secs, size_mb, max_kbps, gegrees_cw
  • 重要な属性を追加する:plaintext_password, unescaped_comment, html_utf8, data_urlenc

名前の長さを決める

  • スコープが小さければ短い名前でもいい
  • 長い名前を入力するのは問題じゃない:大抵のエディタには単語補完機能が付いている
  • 頭文字と省略形:新しいチームメイトはその名前の意味を理解できるだろうか? 理解できるなら問題ない。
  • 不要な単語を投げ捨てる:convertToString() → toString()

名前のフォーマットで情報を伝える

GoogleのC++コーディング規約の例

  • 定数は CONSTANT_NAME ではなく kConstantName:MACRO_ NAME のような #define マクロと簡単に区別できる
  • クラスのメンバ変数は、offset_ のように最後の文字がアンダースコア