優れたコードを書く切欠を与えてくれる本である「リーダブルコード」


この本は本当に「読み易く」「面白い」本だった。
本書は名前もさることながら、目的も

本書の目的は、読みやすいコードを書くことである。

という具合に非常に「読み易い(理解し易い)」ものだ。また、本の中に1〜2週間程度で読んで欲しいと書かれていたが、届いてから4日、月曜日と水曜日は勉強会と懇親会に参加したので実質2日で最後まで読む事ができた。というか気になってしまって読み切ってしまったというのが正しいだろう。
自分もエンジニアの端くれとして、幾つかの原則に従ってコードを書いてきた。それは「グローバル変数は悪だ」、「短いことは良いことだ」、「コメントは分かる様に書く」等々。

しかし、本書を読み進めていくと、従っていたそれらが実はズレているということがまざまざと分かる。それも納得いかないというものではなく、その考えが自然と腹に落ちていくものばかりなのだ。

例えば、P.85 今も「ヨーダ記法」は便利なの?がそれだ。ヨーダ記法というのは、
if (NULL == obj) ...
という順番で書く記法である。
これは
if (obj == NULL) ...
を意図して書いたコードが以下の様に書く人が多かったので、
if (obj = NULL) ...
自分の周囲に提案していた書き方である。ヨーダ記法という名称は自分も知らなかったが、他にもされている人がいたのだろう。これを本書では左側の値は「調査対象の式」で変化するもの、右側の値は「比較対象の式」であまり変化しないものの方が読み易いというのだ。それも実例を交えて説明するので、ガツンっと来る。それも『じゃぁ、バグが出るのと、読み易いのどっちがいいんだい?』と思う読者(=自分)の反論を論破することまで書いてあり、納得感が非常に強かった。

他にも、8.4 短絡評価の悪用もそうだ。優秀な人のコードを読むとかなり簡潔に書かれていることが多い。そういうのを見ると、『やはり達人はロジックを簡潔なコードに落とし込むものなんだ。それが達人の証なんだ』と思う厨二病患者な読者(=自分)の考えを打ち砕いてくれる。著者が以前書いた同じ処理をする1行のコードと、2行のコードを並べて、どちらが読み易いか?理解し易いか?を例示するのだ。これまたガツンっと来る説明があって

どうして1行で書こうとしたのだろう? そのときは「オレは頭がいい」と思っていたのだ。

もうね、読んでいて、胃が痛くなってくること甚だしいもので、今まで書いてきたコードを全部書き直したくなった。

優れたコードを書いている人たちは空気を吸う様に当たり前に本書に書かれていることを実践し続けているのだなぁということが非常に良く分かった。本書は懇切丁寧に書かれていて、文章も非常に読み易く、理解し易いものだ。本当に素晴らしい本だと思う。

今まで書いてきた全てのコードを全てリーダブルなものにすることはすぐにはできないけれど、これから書いていくコードはこの本から学んだことを最大限に活かして、リーダブルコードを書いていきたいと思う書いていく。ただすぐには全部覚えられないので、いつでも見直すことができる様に常に手元に置いておこうと思う。

この様な良書と出会う機会を作ってくれた著者のDustin Boswellさん、Trevor Foucherさん、そして素晴らしい翻訳をしてくれた角 征典さん、発行の株式会社オライリー・ジャパンさん本当にありがとう!