コードの変更容易性を保つための、経験則としての原則群。
原則どうしの関係¶
すべての原則は根っこでは同じことを言っている:モジュール間の結合度を下げ、モジュール内の凝集度を上げよ、ということ。 その理由を掘り下げたのが 結合度と凝集度、オブジェクト指向設計として具体化したのが SOLID原則、より一般的な習慣として言語化したのが KISS・YAGNI・DRYほか、 それ以外の個別トピックを その他の原則 にまとめている。
| ページ | スコープ | 一言でいうと |
|---|---|---|
| 結合度と凝集度 | モジュール分割の評価軸 | 他の原則の「なぜ」を説明する土台 |
| SOLID原則 | クラス設計 | オブジェクト指向における5つの具体的指針 |
| 基本原則 | コード全般 | KISS, YAGNI, DRY, PIE, SLAP など汎用的な心がけ |
| その他の原則 | 個別トピック | デメテルの法則、CQS、契約による設計など |
原則は互いにトレードオフの関係になることもある(例:DRYを徹底しすぎるとYAGNIやSLAPに反する抽象化を生む)。 どれか1つを教条的に適用するのではなく、今のコードの複雑さに対して原則が何を改善するかを都度考えるとよい。
これらのスコープをさらに広げると、クラスをまたいだ再利用可能な構造として デザインパターン、 アプリケーション全体の構造として ソフトウェアアーキテクチャ に繋がる。