読書感想文: リーダブルコード
本の概要
プログラミングにおける、ソースコードの書き方の心得の本。プログラミング言語の文法などは習得した中程度の習熟度のプログラマーに、メンテや修正がしやすかったり、バグを起こしにくいソースコードの書き方を指南する。クラス設計といったマクロな話よりも、変数の命名法など数行~数十行規模で改善可能な部分についての説明が主になる。
感想
本書は使いまわすコードを書く人や複数人との共同開発をするような人に役立つ、コーディングの指針を指南するものである。たとえ同じ動作をするプログラムでも、そのソースコードの読みやすさによって管理にかかる時間や難易度は大きく変わりうる。例えば、一つの変数を何度も書き換えながら使用すると、どこでどのように書き換わるのかの追跡が困難となる。このようなコーディングはバグを作り易くなるし、あとで機能追加などもしにくくなる。本書は管理しやすくなるコードを書くための、数行~数十行の規模で改善できるものをいくつも紹介している。本書で述べられている内容は、プロジェクトの設計など概念的な物ではなく、改善内容を局所的に考えればいいため、実践に際して大規模な仕様変更を必要とせず、改善が簡単である。その点において、言語仕様などを一通り学習し終え、一人でプログラムを完成させられるようになる、脱初心者以上の人々が自身のコードを即時に改善するのに役立つ。
例えば、本書を読んで一番感銘を受けた概念は「カラフルな名前を付ける」ということである。変数の名前はaやxといった意味を含まない名前でないほうがいい、これは理解がしやすい。しかしその言葉選びは情報が多いものにしなければならない。本書では以下のような書き方を推奨しない。
def GetPage(url):
...
この「get」は情報量が少ない。どこからページをとってくるのだろうか。しかし以下のように書けば役割は明白である。
def DownloadPage(url):
...
これならインターネットから情報をとってくることが理解しやすい名前だ。このように、たとえ単語数が同じでも、言葉の選択を変えるだけで変数や関数の役割が明確になることがあるという概念は非常に有用であり、今日においてもこれを念頭に置いてコーディングをしている。
本書をお勧めするできる理由の一つは、本書を読み進めるための心理的障壁の小ささである。端的に言って面白い(funでありfunnyでもある)。説明用のサンプルコードがとても丁寧に書かれているのはもちろん、本書の書き方は先生や先輩が優しく教えてくれるような内容である。それでいて少し茶目っ気があり、挿絵は風刺画のごとくふざけ倒している(それでいて本書の内容の重要さを完結に説明している)。それゆえ、サクサクと読み進めることができる。
こんな人にお勧め
文法の使い方は一通りマスターして、自力でプログラムを作れるようになった人。
自分の書いたコードの意味が分からなくて苦労したことがある人。
バグで苦しんでいる人。
他のオーライリーの本は難しそうで躊躇している人。
余談
ちょっと前にTwitterで少し有名になった「アホくさ」があるのは本書である(原著では"It's nonsense")。
これに限らず、思わず笑ってしまう内容も多い。原著の内容もいいが和訳もいい。