バグ解消法、お役立ち情報など

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

book

リーダブルコード とは?

リーダブルコード(以下本書)は、Dustin Boswell、Trevor Foucher 著、角 征典 訳 の書籍です。

https://www.oreilly.co.jp/books/9784873115658/

エンジニアであれば、間違いなく読むべき書籍であるといえるでしょう。

今回は、そんなリーダブルコードを読み直しましたので、内容をまとめつつ感想をお伝えしたいと思います。

要点まとめ

  • コードは理解しやすくなければならない
  • コードは他の人が最短時間で理解できる用に書かないといけない
  • 変数名、関数名に意味を込める
    • 具体的かつ伝わりやすくする
  • インデントを適切に配置する
  • 最善の名前とは、誤解されない名前である
    • 意図が正しく伝わるようにする
  • プログラミングとは、ほとんどがコードを読む時間である
  • いいコメントよりも、いいメソッド名を目指す
  • 「自分の考え」をコメントする
    • なぜこうしたのか、TODOなど
  • 要約するコメントも良い
  • 実例を示すコメントも良い
  • for文などの制御フローは要注意
    • 自然な並びを心がける
    • if (10 < length) よりも、
    • if (length > 10) の方が読みやすい
  • 行数を短くするよりも、他の人が理解するのにかかる時間を短くする
  • 早期リターンでネストを浅く保つ
  • 計算が長くなる場合は、途中結果を変数として保持すること
    • (ただし、通常は中間結果を保持するための変数は不要)
  • 変数のスコープは小さくする
    • グローバル変数はNG
    • クラス変数も歓迎されない
  • 変数は更新しないこと
    • イミュータブルにする
  • 処理は積極的にメソッドに切り出すこと
  • ひとつのコードはひとつの処理のみ行うこと
  • 複数のタスクを行っている場合は、分割すること
  • 実装したい処理を、言葉にしてみること
    • 言葉にすることで、理解しやすいコードになる
  • できるだけ短いコードにすること
    • 最も読みやすいコードは、何も書かれていないコードだ
  • コードは小さく保つこと
    • 小さいコードは変更しやすい
  • 未使用のコードを見つけたら削除すること
  • ライブラリに詳しくなること
    • 既存ライブラリで解決できないか調べること
  • 安心してテストを追加・変更できるよう、テストコードも読みやすくすること
  • テストも小さい方がよい
    • 小さなテストを複数パターン作る
  • 入力値は、最も単純な組み合わせをテストする
    • マイナスの値が欲しければ、「-1」を使う
    • -99998.7などという値は使わないこと
  • テストを容易にするため、下記のような実装は避けること
    • グローバル変数を使っている
    • 外部コンポーネントに依存している
    • コードが非決定的な動きをする
  • テストが容易なのは、以下のようなコードである
    • クラスが小さい
    • 内部状態を持たない
    • クラスや関数が1つのことをしている
    • 他のクラスに依存していない
    • インターフェースが明確である
  • 下記書籍を読もう!
    • 『Code Complete』
    • 『リファクタリング』
    • 『プログラミング作法』
    • 『達人プログラマー』
    • 『Clean Code』
    • 『JavaScript: The Good Parts』
    • 『Effective Java』
    • 『オブジェクト指向における再利用のためのデザインパターン』
    • 『珠玉のプログラミング』
    • 『ハイパフォーマンスWebサイト』

感想

普段の開発にすぐさま活かせるノウハウが詰まっており、大変勉強になる書籍だと思いました!

読みやすいコードを書く大切さと、どうやって読みやすく書くかが学べました。

自分自身の書いたコードでも、数ヶ月後見直して愕然とすることってありますよね。

「この人、何を考えてこんな複雑な実装をしたんだ?」みたいな。

命名については、ChatGPTなどAIの得意分野だと思うので、どんどん活用していきたいです。

コードは書くよりも読む時間のほうが長い、という言葉にはいつもハッとさせられます。

(これはドキュメントについても同様ですね)

これからも、本書の内容を踏まえて開発を行っていきます!

バグ解消法、お役立ち情報など