Edited at

リーダブルコード:第1部 表面上の改善


1章 理解しやすいコード

コードを書く上で一番大切な原則。


コードは理解しやすくなければならない。


読みやすさの基本定理


コードは他の人が最短距離で理解できるように書かなければいけない。



2章 名前に情報を詰め込む



  • 明確な単語を選ぶ


    • 悪い例) getPage(), int Size(), Stop()

    • 良い例) FetchPage(), Height(), Kill()





  • 名前に情報を追加する


    • 悪い例) int delay, int size, float limit, float angle

    • 良い例) int delay_secs, int size_mb, float max_kbps, float degrees_cw




  • 不要な単語を投げ捨てる


    • 例) ConvertToString() → ToString()

    • 例) DoServeLoop() → ServeLoop()




3章 誤解されない名前


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




  • 曖昧な言葉を避ける


    • 悪い例) results =Database.all_objects.filter("year <= 2011")

    • 良い例) 選択する場合は select(), 除外する場合は exclude()




  • 限界値を含めるときは max_ と min_ を使う


    • 悪い例) CART_TOO_BIG_LIMIT = 10

    • 良い例) MAX_ITEMS_IN_CART =10 




4章 美しさ


3つの原則

・読み手が慣れているパターンと一貫性のあるレイアウトを使う

・似ているコードは似ているように見せる

・関連するコードはまとめてブロックする



5章 コメントすべきことを知る


コメントの目的は書き手の意図を読み手に知らせることである。



  • コメントするべきでは「ない」ことを知る


悪い例.txt

//このAccountからprofitを返す

double GetProfit();


  • 自分の考えを記録する

記法
典型的な意味

TODO:
あとで手をつける

FIXME:
既知の不具合があるコード

HACK:
あまりキレイじゃない解決策

XXX:
危険!大きな問題がある


  • 質問されそうなことを想像する


6章 コメントは正確で簡潔に


  • 曖昧な代名詞を避ける


    • 悪い例) それ、これ

    • 良い例) データ、キャッシュ 



  • 歯切れの悪い文章を磨く

  • 関数の動作を正確に記述する

// このファイルに含まれる行数を返す

int CountLines(string filename){ ... }

// このファイルに含まれる改行文字('¥n')を数える
int CountLines(string filename){ ... }