- DRY: Don't Repeat Yourself
- SOLID:
- Single Responsibility: A function or class should do one thing.
- Open-Closed: Code should be open to new, closed to modification (I disagree on this one).
- Liskov Substitution: Parent classes can be replaced by any of their child without the program failing.
- Interface Segregation: Split big interfaces into smaller ones.
- Dependency Inversion: Use an interface.