Open5
複雑さ、シンプルさ
A Philosophy of Software Design
- 複雑さがシステムの理解と変更を難しくする
- "Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system."
- 複雑さと戦う方法
- コードをシンプルで明白 (obvious) にすること
- モジュール化して、複雑さを隠蔽すること
Simple Made Easy
- simple と easy の違い
- simple = 絡まり合っていない
- ↔ complex (絡まり合った、入り組んだ)
- 客観的
- easy = 親しみやすい、身近に感じる
- ↔ hard
- 主観的 = その人が持っている経験や知識によっても感じ方は変わる
- simple = 絡まり合っていない
simple | easy |
---|---|
![]() |
![]() |
- シンプルさが agility を生む
- 複雑さは理解を妨げる。複雑さは人間の認知能力を簡単に超えてしまう
- シンプルであれば理解しやすく、変更しやすい
- Do not complect things
- CI や TDD などのどんなエンジニアリング・プラクティスよりも、シンプルな設計が aglity を生む
- デザインは分解
A Philosophy of Software Design の表紙はまさに、"complex" と "simple" を表している
Ruby や Rails は easy を指向している。
- easy: 結果を生み出すための努力が最小限ですむこと
- simple: 重要なことを除いてすべてを取り去ること
- minimalism, essentialism