「リーダブルコード」の要約・まとめ


「リーダブルコード」 ~より良いコードを書くためのシンプルで実践的なテクニック~
を読んだので、簡単に要点だけをまとめてみました。
最短最速で要点を抑えたい人には最適です。

全4章で構成されている

  • 表面上の改善
  • ループとロジックの単純化
  • コードの再構成
  • 選抜テーマ

とりあえず1章の要点をまとめます。今後2~4章を追記します。

表面上の改善

理解しやすいコードを書くためのコツが以下の6セクションに渡って説明されている。

セクション1 (優れたコード)

コードは他の人が最短で理解できるものが良い。
簡潔なものより、複数行に渡って書かれているものが良い場合もある。

全ては「読みやすさ」重視。

セクション2 (命名)

名前を見ただけで情報を読み取れることが大事。

  • get,stop,sizeなどよりも、もっと具体的なwordを用いるべき。
  • retVal,value,resultなどの意味のない単語は避けるべき。ただし、その単語の登場する行数(スコープ)が短ければOK。
  • 単語補完機能を使ってみるべし。
  • 省略形は共通認識のものだけ。stringをstrやButtonのbtnなどはOKだが、他の勝手な省略は避ける。

セクション3 (命名での誤解)

他の意味と間違われることはないか確認することが重要。
最善の名前とは誤解されない名前のこと。

  • filterなどは誤解を招く。selectなのか、excludeなのか。
  • 限界値を決めるときは、max,minを使用。
  • bool値はis,has,shouldなどをつけて、true,falseをわかりやすくする。否定形はやめて肯定形にしないと、意味がややこしくなる。

セクション4 (コードの美しさ)

プログラマの仕事の多くはコードを読む時間。
美しいコードの方がいいに決まっている。
重要なのは「一貫性」と「意味のある整形」

  • 変な改行を修正。(IDEのコード補完機能使うとうまくいかないことが多いけど、これは仕方ないのかな。)
  • 縦の整列を意識する。
  • コードをどんな順番で並べても良い時でも、意味のある順番に並べる。重要度、アルファベット順など。
  • 宣言をブロックに分ける(コメントなどで役割を区切る)
  • 長いコードのまとまりは段落分けする。(これも要約コメントで区切っていくと見やすい)

セクション5 (コメントを書く・書かない、コメント内容)

コメントの役割は、書き手の意図を読み手に伝えること。

コメントを書かないケース

  • コードからすぐにわかることをコメントに書かない。
  • ひどい名前を捕捉するためのコメントなら、名前自体を変えるべき。

コメントを書くケース

  • 自分の考えをコメントする。
  • コードの欠陥にコメントをつける。
  • 定数にコメントをつける。定数の値を決めた時の頭の中を記録しておくと良い。
  • ハマりそうな罠はコメントで告知。
  • 読み手が驚きそうなところにはコメントを残す。
  • ファイルやクラスには全体像へのコメントを残す。

セクション6 (コメントする際のTips)

少ない領域に多くの情報を詰める。

  • 代名詞を避ける。
  • 関数の動作は正確に記述。
  • 説明しにくい、伝わりづらいものは実例を交えて説明。
  • 多くの意味が詰められた言葉を用いることで簡潔に書く。

ループとロジックの単純化

制御フローを読みやすく

・条件式の引数の並び順


if(10 >= length)

よりも


if(length <= 10)

の方が読みやすい。

読みやすくするためには、
左側・・・調査対象(変化するもの)
右側・・・比較対象(あまり変化しない。安定なもの。)
にすると良い。

・if/elseのブロックの並び順


if(a == b){
...
} else{
...
}

if(a != b){
...
} else{
...
}

上記の2例では1つめが良い。
これも以下のように優劣が決まっている。

  • 条件は否定系より肯定系を使う
  • 単純な条件を先に書く
  • 関心を引く、目立つ条件は先に書く

これらの条件が重なった場合は自分で判断する。

・三項演算子

基本的にはif/elseを使う。
(条件) ? a : b を使うのは、簡潔にわかりやすく書ける場合のみ。