main() blog

プログラムやゲーム、旅、愛する家族について綴っていきます。

【書籍】リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック

感想

リーダブルコードを読みました。

もっと早く読んでおくべきだったと思います。
初心者は良い勉強になりますし、むしろベテランにも読んでもらいたい本です。

自分は読みながら胸を痛めている側で、「あー、あるある」と思いながら読み進めていましたし、
読む前から実践していたことが出てくると「やってて良かったんだ」と思えたりします。
読んでいても楽しいのぜひ読んでみてください。

あくまでも「こうしたら良くなるよね」という主観的な意見で正解が無いというか、
コーディング規約なども含めてこのような内容は宗教論争になりそうですが、
事例を踏まえて書かれていて読み物としてうまくまとめられていると思います。

「技法」の紹介もありますが「考え方」のお話としてまとめられています。
でもこれって大切なお話だと思います。

コモンセンスがあるとプログラマ同士でもコミュニケーションも取りやすくなります。
コードレビューなどをする際にも、今まではなんとなく「こうだよね」としか言えず
お互い曖昧なままだったりしていましたが、もう少し具体的に話ができてお互いに納得できるようになります。

どちらにしても関わるひとには読むように勧めていきたいです。
もしくはコーディングスタイル(プロジェクトでの推奨の書き方)の様なものにまとめ直して運用するのもありだと思います。
本に書かれていることを全部をやらなくても部分的に取り入れるだけでも効果はあると思います。

でもこの本の一番の効果はコーディングに対する意識が変わることだと思います。

この本を読んだ後では自分のコードを何度でも読み返すようになります。

意識を忘れないためにも数カ月に一度目を通すだけでも本を読み直した方が良いと思います。

概要

1章 理解しやすいコード

コードは理解しやすくなければいけない。
コードは他の人が最短時間で理解できるように書かなければいけない。

第Ⅰ部 表面上の改善

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

名前に情報を埋め込む

  • 明確な単語を選ぶ
  • 汎用的な名前を避ける(あるいは、使う状況を選ぶ)
  • 抽象的な名前よりも具体的な名前を使う
  • 接尾辞や接頭辞を使って情報を追加する
  • 名前の長さを決める
  • 名前のフォーマットで情報を伝える

気取った言い回しよりも明確で正確なほうがいい。

3章 誤解されない名前

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

4章 美しさ
  • 読み手が慣れているパターンと一貫性のあるレイアウトを使う。
  • 似ているコードは似ているように見せる。
  • 関連するコードをまとめてブロックにする。

一貫性のあるスタイルは「正しい」スタイルよりも大切だ。

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

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

  • コメントすべきでは「ない」ことを知る。
  • コードを書いているときの自分の考えを記録する。
  • 読み手の立場になって何が必要になるかを考える。

コードからすぐにわかることをコメントに書かない。

コメントすべきでは「ない」こと:

  • コードからすぐに抽出できる
  • ひどいコード(例えば、ひどい名前の関数)を補う「補助的なコメント」。コメントを書くのではなくコードを修正する。

記録すべき自分の考え:

  • なぜコードが他のやり方ではなくこうなっているのか(「監督のコメンタリー」)。
  • コードの欠陥をTODO:やXXX:などの記法を使って示す。
  • 定数の値にまつわる「背景」。

読み手の立場になって考える:

  • コードを読んだ人が「えっ?」と思うところを予想してコメントをつける。
  • 平均的な読み手が驚くような動作は文章化しておく。
  • ファイルやクラスには「全体像」のコメントを書く。
  • 読み手が細部に捕らわれないように、コードブロックにコメントをつけて概要をまとめる。
6章 コメントは正確で簡潔に

コメントは領域に対する情報の比率が高くなければいけない。

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

7章 制御フローを読みやすくする

条件やループなどの制御フローはできるだけ「自然」にする。コードの読み手が立ち止まったり読み返したりしないように書く。

行数を短くするよりも、他の人が理解するのにかかる時間を短くする。

変更するときにはコードを新鮮な目で見る。一歩下がって全体を見る。

8章 巨大な式を分割する

巨大な式は飲み込みやすい大きさに分割する。

9章 変数と読みやすさ

変数のことが見えるコード行数をできるだけ減らす。

変数を操作する場所が増えると、現在値の判断が難しくなる。

第Ⅲ部 コードの再構成

10章 無関係の下位問題を抽出する
11章 一度に1つのことを

コードは1つずつタスクを行うようにしなければいけない。

12章 コードに思いを込める
13章 短いコードを書く

最も読みやすいコードは、何も書かれていないコードだ。

第Ⅳ部 選抜テーマ

14章 テストと読みやすさ

他のプログラマが安心してテストの追加や変更ができるように、テストコードを読みやすくする。

コードを完全にテストする最も単純な入力値の組み合わせを選択しなければいけない。

テストには最もキレイで単純な値を選ぶ。

15章 「分/時間カウンタ」を設計・実装する