フリーランスPMの開発日記

フリーランスSEとして、PM(プロジェクトマネージャー)をしています。仕事とか、アプリ開発とか、サークル運営とか。自由気ままに。

【読書録】『リーダブルコード』はプログラマーのバイブル

今回の読書録はこちら。

 

プログラマーなら一度は読むべき、と言われている有名な本ですね。

存在は知っていたものの、プログラムに触れる機会は多くないため、一旦後回しにしていました。

 

で、いつの間にかプログラムを教える立場になっていたため

基本を知らなければ、と思い購入。

 

確かに、プログラムを書く人は一度触れておくべき内容だな、と。

今回は、概要だけ抜粋します。

 

全体概要:読みやすいコードとは何か?を言語化した、プログラマーのバイブル

目的は、「読みやすいコードを書くには、何が大事か?」。

 

C++, Python, Javascript, Javaの4つの言語で、

具体的なコードを見ながら

「なぜ読みづらいのか?」

「読みやすくするには、どうしたらいいのか?」

を一般化しながら述べている。

 

  • 変数名やメソッド名の決め方
  • コードの美しさとは
  • コメントすべきこと
  • コメントの書き方
  • 読みやすいロジックとは
  • 読みやすいテストとは

などなど・・・

 

「読みやすいコード」という曖昧な概念を、

必要な要素に分解し、分かりやすく一般化しているのは物凄い快挙だと思う。

そりゃ売れるわけだ。

 

「読みやすいコードってこんな感じでしょ」って自己流でコードを書いている方は、間違いなく読むべきだと思う。

(ご多分に洩れず、僕もその1人である)

 

中でも、気付きの多かった2点を紹介しよう。

個人的な重要ポイント

コードは理解しやすくなければならない。

コードは、動けばいいものではない。

効率的に処理が走ればいいわけでもない。

コードは、理解しやすくなければならない。

 

コードを書くときは、

「見た人がどう思うか?」という視点を常に持たねばならない。

 

誰が見ても最短時間で理解できるよう、

1行1行に意図を張り巡らせながらコードを書いて行くのだ。

 

本書のすべての内容は、この考えを基盤に成り立っている。

  • 読み手が最短時間で理解するのに、この変数名は適切か?
  • 読み手が最短時間で理解するのに、どんなコメントを書くべきか?

などなど。。

 

この考えは今まで全く無かったし、

もはやプレゼン資料を作るのに近いな、と感じた。

 

プレゼン資料は「伝えるための資料」なので、

文字の大きさや、レイアウト、文章の書き方等

すべてに意図を張り巡らせる。

 

コードも、処理を記述した言語であることはもちろんだが

「自分の考えたロジックを読み手に伝える」という役割も持っている。

その意味で、「見た人がどう思うか?」という視点は思っているよりもずっと重要なのだ。

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

コメントは、変数名やメソッドの処理内容を記述するのみならず

書き手の意図を読み手に知らせる、という役割も持っている。

 

本書でのコメント例を紹介する。

このファイルには、ファイルシステムに関する便利なインターフェースを提供するヘルパー関数が含まれています。ファイルのパーミッションなどを扱います。

注意:このコードはリストの重複を処理できません。(実装が難しいので)

このデータだとハッシュテーブルよりもバイナリツリーのほうが40%速かった。

左右の比較よりもハッシュの計算コストのほうが高いようだ。

これらのコメントがなければ、読み手は関数の調査や効率化など

書き手が検討済みで、本来不要な作業に、時間を費やしてしまうかもしれない。

 

つまり、

  • コードから伝わる自分の考えは何か?
  • 逆に、伝わらない考えは何か?

という考えから、どのようなコメントを書くべきかを考える、ということだ。

まとめ:基本を知りつつ、現実に合わせて活用すべし

ということで、今回は『リーダブルコード』の紹介でした。

読みやすいコードをキレイに言語化しているだけでなく、

具体例が大量に紹介されていて非常に分かりやすいので、プログラマーは一度読んでみることをオススメします。

 

ただ、全てを現場で活かせるわけではない、とも思いました。

現場では汚いコードだらけだし、誰もが本書を読んでいるわけではない。

(書き手の意図までコメントに落としている人は、ほとんどいないかと思います)

 

自分の現場の書き方に合わせながら、

「どう工夫したら、読み手がもっと効率的に理解できるか?」を最大限考えていくことが大事だなー、と思います。

 

それを差し引いても、プログラマーが読むべきバイブル的な本であることには間違いありません。

非常に勉強になる本でした。

 

それでは、また。