Model: Method for deliberate design choices
Heuristics competing against Heuristic: Favour Composition over Inheritance
- Heuristic: Use inheritance when template pattern fits
- Heuristic: Use inheritance when is-a
- Heuristic: Use inheritance when behaves-like-a
- Heuristic: Use inheritance when and only when there is inheritance in the domain
Heuristics competing about reality
- Heuristic: Don’t model reality, evaluate for usefulness…driven by the domain
- Heuristic: immutable in reality => immutable in code
- invoice - ready, signed off, sent out, does not change anymore
- Heuristic: when your solution involves breaking&entering, find another solution
Heuristics to help find competing heuristics
- Heuristic: Assume there are multiple possible models
- core DDD heuristics
(src: Video: Design Heuristics - Mathias Verraes - KanDDDinsky 2018)