コンテンツにスキップ

リーダブルコード - 読書記録

📁 docs/reading-notes/20260408_031634_リーダブルコード.md

項目 内容
書籍名 リーダブルコード
ISBN 978-4-87311-565-8
記録日 2026-07-25

書籍から得られた最も重要な学び

コードは自分だけのものではなく、他人(未来の自分を含む)が読むために書くもの。命名・コメント・構造のすべてにおいて「読み手の認知負荷を下げる」ことを意識することが可読性向上の本質。


章別 学びのポイント

第2章(p.27):明確な単語を選ぶ

  • get のような曖昧な動詞より、fetchdownload のような具体的な動作を示す単語を選ぶ
  • tempretrieval のような汎用的な名前はなるべく避ける
  • 明確な理由がある場合は例外(ただし意図を示すコメントを添える)
  • 変数名は「状態・データが一言で判断できる」ものが理想

第3章(p.30):誤解されない命名

命名が「別の意味に取られないか」を確認することが重要。

曖昧な名前 問題 改善例
filter 選択するのか除外するのか不明 select / exclude
clip 切り抜くのか切り取るのか不明 truncate / remove

その単語を見ただけで振る舞いや状態が判断できる命名にする

第4章:美しさ(フォーマット・レイアウト)

  • コードのフォーマットやレイアウトは既存のメソッドに揃える
  • 同様の振る舞いをするメソッドが既に存在する場合は、文体・構造を合わせて記述する

第5章:コメントすべきことを知る

コメントの目的は書き手の意図を読み手に知らせること。

コメントすべきもの: - なぜその挙動になっているのか(Why) - なぜその実装を選んだのか(Why) - ファイルやクラスの全体像

コメント不要なもの: - 細かい中間変数・制御変数(変数名だけで判断できるようにする) - ループ制御のための補助変数

→ 変数名で意味が伝わるように命名することが先決。処理の結果の状態を判別できる名前にするのが良い。

第7章:制御フローを読みやすくする

if文の比較は左辺・右辺に書くものを統一する:

位置 書くもの
左辺 変化するもの(変数) age
右辺 変化しないもの(定数・比較対象) 10
# 良い例
if age < 10:

# 悪い例(ヨーダ記法)
if 10 > age:
  • ネストは浅く保つ — 早期リターンや条件の整理でネストを減らす

第8章(p.100):巨大な式を分割する

説明変数・要約変数の活用:

  • 複雑な式には「これって何?」を一言で表す説明変数を導入する
  • 長い条件式は要約変数にまとめて意図を示す
# 例:要約変数
user_owns_document = (request.user.id == document.owner_id)
if user_owns_document:
    ...

ただし変数の使いすぎに注意: - 邪魔な変数が増えるほど認知負荷が上がる - 変数を追加するなら明確な意図を持って追加する

変数スコープを小さくする工夫: - プライベート変数にする・使用箇所を限定する - final/const を使い「上書きされない保証」を読み手に伝える → 認知負荷を下げる


ネクストアクション

# アクション 具体的に
1 命名を明確にする実践 実際のプロジェクトで変数名・関数名を見直す
2 コメントの質を上げる 「なぜ」を書く・変数名で自明な箇所のコメントを削る
3 if文の左辺・右辺を統一する コードレビューでもこの観点を見る
4 変数スコープの最小化 const/final・プライベート変数の活用を習慣化
5 チームで読書会の実施 命名規則・コメント方針をチームで議論する機会をつくる