ソフトウェア設計
変更しやすさのために構造を選ぶこと。層を増やすこと自体は価値ではない。
変更しやすさのために構造を選ぶこと。
動くだけなら構造は要らない。 構造が必要になるのは
- 人が読んで理解する必要がある
- 後から変更する
- 複数人で並行して作業する
からで、すべて規模の問題。
通底する原則#
| 原則 | 内容 |
|---|---|
| 関心の分離 | 別々に変わるものを分ける |
| 高凝集・低結合 | 中はまとまり、外との依存は少なく |
| 依存の向きを制御する | 安定したものに依存する |
| 抽象に依存する | 実装の詳細に縛られない |
パラダイム#
対立するものではなく、 どちらも「変更の影響範囲を狭める」ための道具。
構成#
注意#
設計の議論は目的を見失いやすい。 層を増やすこと自体が価値ではない。 「この変更をするとき、何箇所触るか」で評価する。
参考文献#
- Robert C. Martin. Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, 2017.
- Martin Fowler. Patterns of Enterprise Application Architecture. Addison-Wesley, 2002.
- David L. Parnas. On the Criteria To Be Used in Decomposing Systems into Modules. Communications of the ACM 15(12), 1972. https://doi.org/10.1145/361598.361623
この階層のノート