リーダブルコード とは?
リーダブルコードは、Dustin Boswell、Trevor Foucher 著、角 征典 訳 の書籍です。
エンジニアであれば、間違いなく読むべき書籍であるといえるでしょう。
今回は、そんなリーダブルコード(以下本書)を読み直しましたので、内容をまとめつつ感想をお伝えしたいと思います。
要点まとめ
- コードは理解しやすくなければならない
- コードは他の人が最短時間で理解できるように書かないといけない
- 変数名、関数名に意味を込める
- 具体的かつ伝わりやすくする
- インデントを適切に配置する
- 最善の名前とは、誤解されない名前である
- 意図が正しく伝わるようにする
- プログラミングとは、ほとんどがコードを読む時間である
- いいコメントよりも、いいメソッド名を目指す
- 「自分の考え」をコメントする
- なぜこうしたのか、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の得意分野だと思うので、どんどん活用していきたいです。
実装したい処理を言葉にしてみる、というのは去年実際に試してみて、「わかりやすい!」との評価をいただくことができました
勧められている書籍はまだ読んでいないものもあるので、今年中に読みたいと思います。
コードは書くよりも読む時間のほうが長い、という言葉にはいつもハッとさせられます。
(ドキュメントについても同様かもしれませんね)
これからも、本書の内容を踏まえて開発を行っていきます!
最後まで見ていただきありがとうございました。