Generic
KISS (Keep It Simple Stupid)
YAGNI
Do The Simplest Thing That Could Possibly Work
Separation of Concerns
Keep Things DRY
Code For The Maintainer
Avoid Premature Optimization
Boy-Scout Rule
- Leave the campground cleaner than you found it
Inter-Module/Class
Minimise Coupling
Composition Over Inheritance
Orthogonality
Robustness Principle
Be conservative in what you do, be liberal in what you accept from others
Inversion of Control
- Don’t call us, we’ll call you
Module/Class
Maximise Cohesion
Liskov Substitution Principle
Open/Closed Principle
Single Responsibility Principle
- A class should never have more than one reason to change.
Hide Implementation Details
Curly’s Law
Encapsulate What Changes
Interface Segregation Principle
- Reduce fat interfaces into multiple smaller and more specific client specific interfaces.
Command Query Separation
- Asking a question should not modify the answer
- Separating methods into queries and commands
SOLID
- Liskov Substitution Principle
Resources