- Design Patterns
- Creational
- Factory Method
- Abstract Factory
- Builder
- Singleton
- Structural
- Facade
- Proxy
- Decorator
- Composite
- Adapter
- Flyweight
- Bridge
- Behavioral
- Strategy
- Template method
- Visitor
- Chain of Responsibility
- Mediator
- State
- Observer
- Creational
- Principles
- SOLID
- Dependency Inversion vs Inversion Of Control vs Dependency Injection
- DRY
- KISS
- YAGNI
- Separation of Concerns
- Least Knowledge
- The Hollywood
- Favor Composition over Inheritance
- Program to an interface, not an implementation
- SOLID
- Code Smells
- Bloaters
- Long Method
- Large Class
- Primitive Obsession
- Long Parameter List
- Data Clumps
- Object-Orientation Abusers
- Switch Statements
- Temporary Field
- Refused Bequest
- Alternative Classes with Different Interfaces
- Change Preventers
- Divergent Change
- Shotgun Surgery
- Parallel Inheritance Hierarchies
- Dispensables
- Comments
- Duplicate Code
- Lazy Class
- Data Class
- Dead Code
- Speculative Generality
- Couplers
- Feature Envy
- Inappropriate Intimacy
- Message Chains
- Middle Man
- Bloaters