概要
開発が大規模化・長期化するほど,コードを「読む」コストは増大していきます。そのため「読みやすさ」の向上は,生産性を改善し,プロダクトの成長限界を引き上げる重要な手段と言えるでしょう。
本書は,読みやすさの本質を学び,実践するための考え方をマスターできる一冊です。体系的な理解を実現するため,あらゆる角度から,豊富な例を交えて解説しています。表面的なテクニックではなく,いま目の前にあるコードに最適な改良方法を選び取る力が身に付きます。
こんな方におすすめ
- プログラミングの基本を学び終え,さらにステップアップしたい方
- 1か月以上かかる長期の開発に携わる方
- コーディングのルールをどう適用するか知りたい方
目次
第1章 可読性の高いコードを書くために
- 1-1 生産性への恩恵
- 1-1-1 開発の規模と生産性の関係
- 1-1-2 可読性を高めるための環境と評価体制
- 1-2 可読性の高いコードを書くための要件
- 1-2-1 可読性に関連する指標
- 1-2-2 可読性を高める取り組み方
- 1-3 代表的なプログラミング原則
- 1-3-1 ボーイスカウトルール
- 1-3-2 YAGNI
- 1-3-3 KISS
- 1-3-4 単一責任の原則
- 1-3-5 早計な最適化は諸悪の根源
- 1-4 まとめ
第2章 命名
- 2-1 命名に使う文法
- 2-1-1 名詞または名詞句
- 2-1-2 命令文
- 2-1-3 その他の文法
- 2-1-4 なぜ文法を無視した命名がされるのか
- 2-2 名前の示す内容
- 2-2-1 例:引数の名前
- 2-2-2 例:関数の名前
- 2-2-3 例外:抽象メソッド
- 2-3 単語の選択
- 2-3-1 曖昧性の少ない単語を選ぶ
- 2-3-2 紛らわしい省略語を避ける
- 2-3-3 単位を型で示す
- 2-3-4 肯定的な単語を用いる
- 2-4 言語・プラットフォーム・プロダクトの規約
- 2-5 まとめ
第3章 コメント
- 3-1 コメントの種類と目的
- 3-2 ドキュメンテーション
- 3-2-1 アンチパターン
- 3-2-2 ドキュメンテーションの構成
- 3-2-3 ドキュメンテーションの要約
- 3-2-4 ドキュメンテーションの詳細
- 3-3 非形式的なコメント
- 3-3-1 大きなコードの分割
- 3-3-2 非直感的なコードの説明
- 3-4 まとめ
第4章 状態
- 4-1 可変の値の方が有用なケース
- 4-2 複数の変数間の直交性
- 4-2-1 直交の定義
- 4-2-2 手法:関数への置き換え
- 4-2-3 手法:直和型での置き換え
- 4-3 状態遷移の設計
- 4-3-1 不変性
- 4-3-2 冪等性
- 4-3-3 非巡回
- 4-4 まとめ
第5章 関数
- 5-1 関数の責任
- 5-1-1 責任の分割の基本方針
- 5-1-2 コマンドとクエリの分離
- 5-2 関数の流れ
- 5-2-1 定義指向プログラミング
- 5-2-2 早期リターン
- 5-2-3 操作対象による分割
- 5-3 まとめ
第6章 依存関係
- 6-1 依存関係の例
- 6-2 依存の強さ:結合度
- 6-2-1 内容結合
- 6-2-2 共通結合と外部結合
- 6-2-3 制御結合
- 6-2-4 スタンプ結合とデータ結合
- 6-2-5 メッセージ結合
- 6-3 依存の方向
- 6-3-1 呼び出し元→呼び出し先
- 6-3-2 具体→抽象
- 6-3-3 複雑・可変→単純・不変
- 6-4 依存の重複
- 6-4-1 数珠つなぎの依存
- 6-4-2 依存の集合の重複
- 6-5 依存の明示性
- 6-5-1 アンチパターン1:過度な抽象化
- 6-5-2 アンチパターン2:暗黙的な変域
- 6-6 まとめ
第7章 コードレビュー
- 7-1 レビューイの注意点1:レビューしやすいプルリクエストを作る
- 7-1-1 プルリクエストの目的の明示
- 7-1-2 プルリクエストの分割
- 7-1-3 コミットの構造化
- 7-2 レビューイの注意点2:コメントを適用する方法
- 7-2-1 間違ったコメントや質問への対応
- 7-2-2 提案の意図の理解
- 7-2-3 他の部分への適用
- 7-3 レビューアの注意点1:レビュー実施時の基本原則
- 7-3-1 レビュー依頼を放置しない
- 7-3-2 問題のあるプルリクエストを拒否する
- 7-3-3 締切を意識しない
- 7-3-4 「提案」以外のコメントを考慮する
- 7-4 レビューアの注意点2:コメントの内容
- 7-5 まとめ
サポート
正誤表
本書の掲載内容に誤りがございました。ここに訂正するとともに,ご迷惑をおかけしましたことをお詫び申し上げます。
P.232 コード6-53 5行目