dry#
kiss#
encapsulate what varies#
program to an interface, not an implementation#
favour composition over inheritance#
SOLID#
single responsibility principle#
open/closed principle#
Liskov substitution principle#
interface segregation principle#
dependency inversion principle#