SOLID
- SRP The Single Responsibility Principle A class should have one, and only one, reason to change.
- OCP The Open Closed Principle You should be able to extend a classes behavior, without modifying it.
- LSP The Liskov Substitution Principle Derived classes must be substitutable for their base classes.
- ISP The Interface Segregation Principle Make fine grained interfaces that are client specific.
- DIP The Dependency Inversion Principle Depend on abstractions, not on concretions.