読みやすいコードのガイドライン
―持続可能なソフトウェア開発のために

書籍の概要

この本の概要

開発が大規模化・長期化するほど,コードを「読む」コストは増大していきます。そのため「読みやすさ」の向上は,生産性を改善し,プロダクトの成長限界を引き上げる重要な手段と言えるでしょう。

本書は,読みやすさの本質を学び,実践するための考え方をマスターできる一冊です。体系的な理解を実現するため,あらゆる角度から,豊富な例を交えて解説しています。表面的なテクニックではなく,いま目の前にあるコードに最適な改良方法を選び取る力が身に付きます。

こんな方におすすめ

  • プログラミングの基本を学び終え,さらにステップアップしたい方
  • 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-4-1 ケーススタディ
  • 7-5 まとめ
  • 付録 本書を読む上で必要となるKotlinの文法

著者プロフィール

石川宗寿(いしかわむねとし)

LINEヤフー株式会社所属。シニアソフトウェアエンジニアとして,コミュニケーションアプリ"LINE"のAndroid版の開発に従事。"LINE"のソースコードの可読性向上のため,自らリファクタリング・コードレビューをする他,可読性にかかわる開発文化や基盤の構築,教育・採用プロセスの改善なども行う。