クラス〜モジュールレベルで「変更しやすいコード」をどう組み立てるかを扱う。アプリケーション全体〜システム全体の 構造は ソフトウェアアーキテクチャ で扱う。
スケール別の見取り図¶
「良い設計とは何か」という問いへの答えは、突き詰めると結合度を下げ凝集度を上げること に集約される。原則・パターン・アーキテクチャは、この同じ目的を 異なるスケール に適用したものと捉えると、 どれをどこで使うべきかが整理しやすい。
| スケール | 扱うもの | このディレクトリ内の主な内容 |
|---|---|---|
| 式・関数 | 1つの関数やメソッドの書き方 | 基本原則(KISS, YAGNI, DRY, SLAPなど) |
| クラス | クラス間の責務分担・依存の向き | SOLID原則、デザインパターン |
| モジュール・ドメイン | 業務知識をどうモデルへ落とすか | ドメイン駆動設計(DDD) |
| アプリケーション | 層の分け方・依存の方向 | ソフトウェアアーキテクチャ(application) |
| システム・分散 | サービス間の連携・整合性 | ソフトウェアアーキテクチャ(distributed) |
コードの臭い(設計原則違反のサイン)に気づいてから改善する具体的な手順は リファクタリング にまとめている。