目次は吟味せずに買って読んだ。こういう呼び方をするのは知らなかったみたいなものはあれど、内容的にはよく知っていて普段から実践したりコードレビューで提案することだった。
数えてみるとソフトウェアエンジニアになって19年目になるので逆にこの本に書かれていることに驚くようではダメだけど、網羅的に書き出せと言われたら困るので良い反芻になったと思う。
本書は400ページ近くあるけれど扱っている範囲は少なめだと思う。トピックをかなり厳選した上で丁寧に説明することに紙面を割いていると思う。良かったところを2つ書こうと思う。
リアリティある問題設定
どれも開発現場で実際に出会う “考えるべきこと” ばかり。教科書英語じゃなくてネイティブが使う本当の英語みたいな感じ。事情により不出来なコードを書かざるを得ない場合に説明するコメントが有用であること、プログラマが例外を塗りつぶしてしまう動機、継承が破綻しがちな理由など、理想通りにならない現実を前提にした話が良い。
コードはすぐ壊れる
改修に弱いコード、他人が壊しやすい/誤用しやすいコード、といった書いた瞬間は問題がないように思えてすぐ酷い目にあうパターンを取り上げている。経験が長いと大抵痛い目にあって反面教師的に習得しているけれど経験がまだなくても本書で学んで不幸が減ると良いなと思う。
全体として
全体的に見れば目新しいことはなく基礎として押さえておきたいものがほとんどだと思う。最後にあるユニットテストは知ってる人が見ればその通りだけどテストに馴染みがない人に対してだと伝わり切らない感じがした。普段からテストコードは書くけれどなんとなくになっている人には良いかもしれない。
動くプログラムは作れるけれど、製品開発/チーム開発におけるもっと良いコードが書きたいという人におすすめできる本だと思う。