I'm hoping to assemble a definitive and useful study guide. Please help!
I'll start:
- Program to an Interface not an Implementation
- Interface Separation Principle
- DRY Principle (Don't Repeat Yourself)
- Law of Demeter
- Liskov Substitution Principle
- Dependency Injection/Inversion of Control
- Separation of Concerns
- Loose Coupling
- Open Closed Principle
- Prefer Composition over Inheritance