「リーダブルコード」を読んだ感想

投稿日:2016年8月30日 更新日:

okuzawatsです。

良いコード、書いてますか。
わたくしは時々、自分の書いたコードを読んで、ひどいコードを生み出してしまったと自己嫌悪におちいります。
もっと良いコードを書きたいものですね。

そんな思いで手にしたのが、名著と名高い
リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック
です。

何度も読みましたが、読むたびに学びがあります。
リーダブルコードの内容の整理を兼ねて、内容の紹介と読んだ感想を書いておきます。

リーダブルコードという本について知らない方のために、少し説明しておきましょう。

リーダブルコード(正式名称は「リーダブルコード〜より良いコードを書くためのシンプルで実践的なテクニック〜」)は、「コードの書き方」系の本として、とても人気があります。
一冊まるごと、「読みやすいコードとはどのようなものなのか」ということについて書かれています。
名前のとおり、リーダブル(=読みやすい)コードについての本です。

2,400円くらいしますが、これを読んで読みやすいコードが書けるようになるなら、安いものですよね!
タイムイズマネー。外国人もそう言っています。真理です。

ということで、リーダブルコードを読んで得られた学びをまとめていきます。

コードは理解しやすくなければならない。
本書はこの原則を日々のコーディングの様々な場面に当てはめる方法を紹介する。
名前の付け方、コメントの書き方など表面上の改善について。
コードを動かすための制御フロー、論理式、変数などループとロジックについて。またコードを再構成するための方法。
さらにテストの書き方などについて、楽しいイラストと共に説明する。

リーダブルコードの目次と構成

リーダブルコードの目次構成はこんな感じになっています。
命名規則について2章、コメントについても2章を割いているなど、他の本にはない、大胆な構成になっております。

  • 第1部:表面上の改善
    • 1章:理解しやすいコード
    • 2章:名前に情報を詰め込む
    • 3章:誤解されない名前
    • 4章:美しさ
    • 5章:コメントすべきことを知る
    • 6章:コメントは正確で簡潔に
  • 第2部:ループとロジックの単純化
    • 7章:制御フローを読みやすくする
    • 8章:巨大な式を分割する
    • 9章:変数と読みやすさ
  • 第3部:コードの再構成
    • 10章:無関係の下位問題を抽出する
    • 11章:一度に1つのことを
    • 12章:コードに思いを込める
    • 13章:短いコードを書く
  • 第4部:選抜テーマ
    • 14章:テストと読みやすさ
    • 15章:「分/時間カウンタ」を設計・実装する
  • 付録:あわせて読みたい

リーダブルコードを読んで得られた学び

  • コードを書く上でいちばん大切な原則は、「コードは理解しやすくなければいけない」ということ
  • コードに適切な名前をつける、優れたコメントを書く、空白の使い方をきれいにする、だけでコードはずっと読みやすくなる
    • 名前は短いコメントである。名前に情報を埋め込むこと。抽象的でなく具体的な名前にすること。いい名前とは、変数や関数の目的や値をはっきりと示すものである。
    • 誤解を生む名前でないか、気をつけよう
      • 例えば、filter(year <= 2016)という関数は2016年以前を抽出するのか?2016年以降を抽出するのか??わからない
      • getHoge()という関数は軽い処理と考えがちなので、それが重い処理だと大変なことになる
    • 識別子のスコープが短い場合は、名前に多くの情報を詰め込む必要はない。識別子のスコープが大きければ、名前に十分な情報を詰め込んで明確にしよう
    • 見た目の美しいコード(改行位置やインデントなどが揃っているコード)は読むのも速く、使いやすい
  • 意味のある順番に並べる、一貫性を保つ、ブロックにまとめる、段落に分割すること
  • コードを読んで分かることは、コメントには書かない
    • コメントを読むのには時間がかかるし、画面も占領する。コメントにはそれだけの価値を持たせること
    • コメントでは、自分の考えを記録する、コードの欠陥について書く、定数の根拠を書く、など
    • ひどい名前は、コメントで埋め合わせようとせずに名前を変える。優れたコメントより名前の方が大切
    • コードの欠陥はコメントで書き残す。TODO(あとでやること)、FIXME(既知の不具合がある)、HACK(あまり綺麗ではない解決策)など
  • 条件式の並び順に気をつけるとコードが読みやすくなる
    • 条件は否定形ではなく肯定形を使う(if(!debug)よりif(debug))
    • 単純な条件を先に書くと、ifとelseが同じ画面で表示されるので見やすい
  • 関数の中で複数のreturn文を使ってはいけないと思っている人がいるみたいだけど、関数から早く返すのは良いことだし、むしろ望ましい場合もある
  • ネストは積極的に浅くすること
  • 巨大な式は分割すること。大きなコードの塊は小さな名前に置き換えること
  • 「無関係の下位問題」を抽出して、再利用可能なユーティリティコードとして取り出すと便利
  • 汚いインターフェースは自分でラッパー関数を用意するといいよ
  • 一度に一つのタスク」。一度に複数のことをやろうとしているコードは理解しにくい。ひとつずつタスクを処理しよう
  • 使ってないコードや機能は削除しよう

こんなところでしょうか。

ひとつひとつを見ていくと当たり前に思えることも多いですが、必ずしもいつもできているわけではないですね。

読みやすいコードを書いて助かるのは誰よりも自分ですので、丁寧に読みやすいコードを書いていきたいと思います。

リーダブルコード、定期的に読み返したい良書です!

茨城県つくば市在住のAndroidアプリエンジニアです。

-プログラミング, 読書感想文

Copyright© Androidアプリ開発@つくば , 2017 AllRights Reserved Powered by AFFINGER4.