見出し画像

読書記録「リーダブルコード」 -文章読本としてのリーダブルコード-

本記事はGW Advent Calender 7日目の記事です。

  積んである本を消化しようと思ったものの、前回読んだ「プログラムのためのSQL」があまりにも重かったので、もうちょっと軽く読める本はないかと探していたら、「リーダブルコード」を見つけました。

  実際にコードを書く機会は少なくなったものの、こういうのを軽く読んでおくことで、いざ自分がコードを書いたり読んだりする時も戸惑わないようにしておこうと思い立ち、読むことにしました。


「アオイホノオ」から始まる前書き

コードを書くことから離れて久しいく、読むのに時間がかかると予想していましたが、全くそんなことはありませんでした。というより、冒頭の訳者まえがきで僕はこの本が良書であることを確信しました。

タイトルが示すとおり、本書のテーマは「読みやすいコード」である。「読みやすい」と聞いてすぐに思い浮かぶのは、島本和彦『アオイホノオ』(小学館)7巻に出てくるセリフだ(くしくも原書と同じ2011/11に発売されている)。
「面白いと、読みやすいは、違うんだよ?」
(リーダブルコード P.v 訳者まえがきより)

  いきなりの「アオイホノオ」の引用に驚いたものの、僕は島本和彦のファンなのでテンションが一気に上りました。また、本書を読了して、この「訳者まえがき」をあらためて読むと、訳者の角征典さんの翻訳にかける姿勢がよく現れていると感じました。説教じみてもいなく、かといってふざけすぎてもいない、「先輩から優しくアドバイスを受けている」という本を目指しています。「挿絵はふざけているけどな!」とありますが、IT系のライトニングトークでちょこちょこまどマギなどの小ネタが差し込まれていることを考えると、テイストとしては悪くないと思います。

以下、リーダブルコードの目次(章のみを抜粋)。

訳者まえがき
はじめに
1章 理解しやすいコード

第I部 表面上の改善
2章 名前に情報を詰め込む
3章 誤解されない名前
4章 美しさ
5章 コメントすべきことを知る
6章 コメントは正確で簡潔に

第II部 ループとロジックの単純化
7章 制御フローを読みやすくする
8章 巨大な式を分割する
9章 変数と読みやすさ

第III部 コードの再構成
10章 無関係の下位問題を抽出する
11章 一度に1つのことを
12章 コードに思いを込める
13章 短いコードを書く

第IV部 選抜テーマ
14章 テストと読みやすさ
15章 「分/時間カウンタ」を設計・実装する

付録 あわせて読みたい
解説(須藤 功平)
最後に

  プログラムを覚えたての新人でも、第Ⅰ部については何の問題もなく読み進められるでしょう。個人的には、メソッドの名付け方についてgetter、setterと機械的につけていたことを反省しています。複雑すぎてメモリの消費が激しかったり時間がかかる処理は別名を付けて注意を促すのは、あまり意識していなかったので、得るものがありました。
  第Ⅱ部と第Ⅲ部は、「プログラムの設計」ともいうべき内容で、こちらもプログラマ必読です。「読み易いコード」とは、モジュール単位に適切に分割されていること。これは、「保守性・拡張性の高い設計とは何か」に通じる話です。もし具体的な内容を知りたければ、まずは「第10章 無関係の下位問題を抽出する」「第11章 一度に1つのこと」の2章を読むと良いでしょう。ここは繰り返し読んで身につけておくと、後々役に立つことは間違い無いです。「コードを改善するために、どのような観点で見るべきか」が養われるからです。

「リーダブルコード」とは「読みやすい文章」である

  本書を読んで考えたのは「適切なコードを書くことは適切な文章を書くことに他ならない」ということです。読みにくいコードは(メモリの節約などで意図的にそう書いている場合は別ですが)、何を表しているのかわからない変数や、あちらこちらに処理が飛ぶなどの理由で、構造や意図がわかりにくくなっています。
  文章についても同じことが言えます。指示語だらけで指しているものが不明瞭、主語と述語の間に修飾語が多くて構造がわかりにくい、などなど。表現技法の一つとして意図的に使われることはありますが、大抵の場合は校閲ではねられます。小説ならまだしも、ビジネス文書や設計書ではNGです。わかりやすい文章は他の人にとって理解しやすいように、わかりやすいコードは他の人にとって理解しやすいコードです。
  「わかりやすい(リーダブル)コード」を書くことが重要な理由は、まさにここにあります。コードを読むのは他人とは限りません。「未来の自分」も自分の書いたコードを読むのです。しかし「1ヵ月前に書いたコードはもはや他人のコード」という言葉の通り、自分が書いたコードも、いつしか他人のコードと変わらなくなります。
  そのコードが「わかりやすい(リーダブル)コード」で無かったら。自分で自分の首を絞める事になります。

  その意味で、本書「リーダブルコード」は、文章読本に他なりません。文章を書くということは、他人に対して意見を表明したり記録をすることです。そしてその「他人」とは、「未来の自分」も含まれいます。
  「リーダブル」とはどういうことか。「読むことができる」ということです。「読むことができる」とはどういうことか。「その人の考えを理解できる」ということです。その人の考えを理解する、ということは結局のところ、コードも文章も違いはありません。

  本書は言語によらず「プログラミングをはじめよう、勉強しようと考えている人」は必ず読むべき本と言ってもよいです。実際に現場でプログラムを書いているプログラマーにとっては、命名規約やルールなどがプロジェクトで設定されており、自明と思われる内容もおそらくあります。それでも、あらためて読んで理解することは今後のキャリアにとって有益です。たとえば自分でプロジェクトを立ち上げるとき、どのような命名規約が適切かなど、プロジェクトルールを決める時に本書に書かれている内容は一定の手がかりになるでしょう。

いいなと思ったら応援しよう!

この記事が参加している募集