はじめまして!4月よりジョインしたベアーです!
自粛期間のゴールデンウィークを利用して、片付けをしていたら懐かしい本を発掘したので、紹介しようと思います。
それがこちら!
リーダブルコード
――より良いコードを書くためのシンプルで実践的なテクニック
原著は2011年初版の「The Art of Readable Code: Simple and Practical Techniques for Writing Better Code」で紹介するのは日本語訳したものです。
対象読者
人を選ばないと思いますが、完全に主観で以下の方に特に読んでいただきたい一冊です。
- 自分で書きたいものが書けるけど、これでいいのかな?と疑問を持っている人
- 「なんだか汚いコードだな」と日頃から思っている人
- 変数名に a とか hoge をすぐに使う人
何を隠そう、私自身が上の3つを抱えています(笑)
内容紹介
「約10年も前の本なんて役にたつの?」と疑問を持つ方もいるかもしれませんが、私は数年に一度、掃除の折に発掘しては読み返しています。
こういったベストプラクティスを紹介する本では「こうすればいい」だけが書いてあるだけのものもありますが本書は問題点の指摘→解決策→効果と並ぶので、納得感が高いです。
取り上げられている内容は各部ごとに、次のように着目する対象範囲が大きくなっていきます。
- 第I部 表面上の改善 → 1行分
- 第II部 ループとロジックの単純化 → 1メソッド分
- 第III部 コードの再構成 → 1クラス分
- 第IV部 選抜テーマ → 1テスト分
小さい改善から始めて、だんだんと大きな改善に繋げられるように構成されているので順番に読み進めて行くとムリなく理解できるようになっています。
そして1つの章・節のまとまりがすっきりしているのも特徴的です。
各章ごとに扱うトピックは絞られ、節ではすぐに取り入れられるテクニックから紹介されています。
目次の冒頭をみてみると、以下のように整理整頓され、まるでプログラムのスコープやメソッドのようにも見えてきます。
- 理解しやすいコード
- 「優れた」コードって何?
- 読みやすさの基本定理
- 小さなことは絶対にいいこと?
- 「理解するまでにかかる時間」は競合する?
- 他
- 名前に情報を詰め込む
- 明確な単語を選ぶ
- tmpやretvalなどの汎用的な名前を避ける
- 抽象的な名前よりも具体的な名前を使う
- 名前に情報を追加する
- 他
- …以下省略…
完全な目次は O’Reilly Japan の書籍ページをご覧ください。
https://www.oreilly.co.jp/books/9784873115658/
また、本書はより良いコーディングをするための本なので、もちろんコードも出てきます。
しかし、基本文法レベルを使用しているので難解なコードはありませんし、コード自体も10行程度のコンパクトな物が多いので、じっくりコードを読んでみることもオススメです。
if や for、関数、クラスぐらいの文法が分かっていればサラサラと読めると思います。
文中のコードは主に以下の言語で記載されています。
C++, Python, JavaScript, Java
読み返してみて
ここ数年、読み返していなかったのですが読み返してみて、以下のことがわかりました。
「できるようになったこと > できないこと」
数年前では、変数名やインデント、フォーマットなどは昔から気にしている方でしたが、ネスト(入れ子)の深さや関数を抜けるタイミングなどは意識しないとうまく書けないことが多かった印象です。
最近では、複雑なロジックをどう分割して読みやすくするかを意識するようになってきたので、10年前にこの本と出会っていなかったらと思うとゾッとします。
まとめ
書籍紹介と言いつつ、後半はただ自分の振り返りになりましたが、本書「リーダブルコード」は数年ごとに再度読んで、自分がどう成長したのかわかる一冊です。
こういう陳腐化しないベストプラクティスはなかなか出会えないのですが、当時の Twitter で流行っていて、買ったのを思い出します。
今でも書店や Amazon などで買えます。
しかし、オススメは O’Reilly Japan です。
こちらだと PDF や ePub 形式を割安に買えますし、電子書籍なので整理も楽です!
https://www.oreilly.co.jp/books/9784873115658/
目次をみて気になったらぜひ手にとってみてください。
また、皆さんが思う出会ってよかった技術書などあればぜひ教えてください!