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)