Part 3 — Design Principles
-
SOLID原則の教えるところ
- 関数とデータ構造を「クラス」にまとめるやり方
- クラスどうしの相互接続のあり方
-
「クラス」はオブジェクト指向言語を前提とはしていない
- 「ふるまいとデータがまとまったアレ」のこと
-
SOLID原則の目標: 「よいレンガ」をつくる
-
下記のようなモジュール
- 変更に強い
- 理解しやすい
- 多くのシステムで再利用可能
-
-
その後で、より高水準の「アーキテクチャ」について学んでいく
- レンガがまずいとよい建造物は作れない
- だが、よくできたレンガでもめちゃめちゃな建造物を建てられてしまう
-
SOLIDの昔話
- 統廃合があって今の形になった
- 2004, Michael Feathers氏の指摘でこの順番に
-
サマリー
-
SRP: The Single Responsibility Principle
-
コンウェイの法則からの帰着
- ソフトウェアの構造は、それ使う組織の構造から影響を受けるよ、ってやつ
- ソフトウェアのモジュールの変更理由はただ一つであるべき
-
-
OCP: The Open-Closed Principle
- 1980s、Bertrand Meyer提唱
- 変更のしやすいソフトウェア設計とは?
- 既存のコードを変更するのではなく、新しいコードを追加してふるまいを変えられる設計
-
LSP: The Liskov Substitution Principle
- 1988, Barbara Liskovによる派生型の定義
- 交換可能なソフトウェア部品を作るには、Contract(契約)に準拠させなければならない
-
ISP: The Interface Segregation Principle
-
使わないものに依存するな
- 【補】使うものだけインタフェースに切り出せってことかな
-
-
DIP: The Dependency Inversion Principle
- 高水準のポリシーと低水準の実装詳細を分ける
- ポリシーは実装詳細に依存すべきではない
- 逆に、実装詳細がポリシーに依存すべき
-
英語
-
corollary
- 当然の帰着
-
gist
- 要旨