【読書録】『リーダブルコード』はプログラマーのバイブル
今回の読書録はこちら。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者:Dustin Boswell,Trevor Foucher
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
プログラマーなら一度は読むべき、と言われている有名な本ですね。
存在は知っていたものの、プログラムに触れる機会は多くないため、一旦後回しにしていました。
で、いつの間にかプログラムを教える立場になっていたため
基本を知らなければ、と思い購入。
確かに、プログラムを書く人は一度触れておくべき内容だな、と。
今回は、概要だけ抜粋します。
全体概要:読みやすいコードとは何か?を言語化した、プログラマーのバイブル
目的は、「読みやすいコードを書くには、何が大事か?」。
C++, Python, Javascript, Javaの4つの言語で、
具体的なコードを見ながら
「なぜ読みづらいのか?」
「読みやすくするには、どうしたらいいのか?」
を一般化しながら述べている。
- 変数名やメソッド名の決め方
- コードの美しさとは
- コメントすべきこと
- コメントの書き方
- 読みやすいロジックとは
- 読みやすいテストとは
などなど・・・
「読みやすいコード」という曖昧な概念を、
必要な要素に分解し、分かりやすく一般化しているのは物凄い快挙だと思う。
そりゃ売れるわけだ。
「読みやすいコードってこんな感じでしょ」って自己流でコードを書いている方は、間違いなく読むべきだと思う。
(ご多分に洩れず、僕もその1人である)
中でも、気付きの多かった2点を紹介しよう。
個人的な重要ポイント
コードは理解しやすくなければならない。
コードは、動けばいいものではない。
効率的に処理が走ればいいわけでもない。
コードは、理解しやすくなければならない。
コードを書くときは、
「見た人がどう思うか?」という視点を常に持たねばならない。
誰が見ても最短時間で理解できるよう、
1行1行に意図を張り巡らせながらコードを書いて行くのだ。
本書のすべての内容は、この考えを基盤に成り立っている。
- 読み手が最短時間で理解するのに、この変数名は適切か?
- 読み手が最短時間で理解するのに、どんなコメントを書くべきか?
などなど。。
この考えは今まで全く無かったし、
もはやプレゼン資料を作るのに近いな、と感じた。
プレゼン資料は「伝えるための資料」なので、
文字の大きさや、レイアウト、文章の書き方等
すべてに意図を張り巡らせる。
コードも、処理を記述した言語であることはもちろんだが
「自分の考えたロジックを読み手に伝える」という役割も持っている。
その意味で、「見た人がどう思うか?」という視点は思っているよりもずっと重要なのだ。
コメントの目的は、書き手の意図を読み手に知らせることである。
コメントは、変数名やメソッドの処理内容を記述するのみならず
書き手の意図を読み手に知らせる、という役割も持っている。
本書でのコメント例を紹介する。
このファイルには、ファイルシステムに関する便利なインターフェースを提供するヘルパー関数が含まれています。ファイルのパーミッションなどを扱います。
注意:このコードはリストの重複を処理できません。(実装が難しいので)
このデータだとハッシュテーブルよりもバイナリツリーのほうが40%速かった。
左右の比較よりもハッシュの計算コストのほうが高いようだ。
これらのコメントがなければ、読み手は関数の調査や効率化など
書き手が検討済みで、本来不要な作業に、時間を費やしてしまうかもしれない。
つまり、
- コードから伝わる自分の考えは何か?
- 逆に、伝わらない考えは何か?
という考えから、どのようなコメントを書くべきかを考える、ということだ。
まとめ:基本を知りつつ、現実に合わせて活用すべし
ということで、今回は『リーダブルコード』の紹介でした。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
- 作者:Dustin Boswell,Trevor Foucher
- 発売日: 2012/06/23
- メディア: 単行本(ソフトカバー)
読みやすいコードをキレイに言語化しているだけでなく、
具体例が大量に紹介されていて非常に分かりやすいので、プログラマーは一度読んでみることをオススメします。
ただ、全てを現場で活かせるわけではない、とも思いました。
現場では汚いコードだらけだし、誰もが本書を読んでいるわけではない。
(書き手の意図までコメントに落としている人は、ほとんどいないかと思います)
自分の現場の書き方に合わせながら、
「どう工夫したら、読み手がもっと効率的に理解できるか?」を最大限考えていくことが大事だなー、と思います。
それを差し引いても、プログラマーが読むべきバイブル的な本であることには間違いありません。
非常に勉強になる本でした。
それでは、また。