SOLID
Definition
SOLID is a set of object-oriented design principles intended to reduce unnecessary complexity and improve maintainability. Together, the principles encourage systems that are easier to change, extend, test, and reason about.
The Five Principles
- Single Responsibility Principle — a class should have one reason to change
- Open/Closed Principle — software should be open for extension but closed for modification
- Liskov Substitution Principle — subtypes should be usable in place of their base types without breaking behavior
- Interface Segregation Principle — clients should not depend on methods they do not use
- Dependency Inversion Principle — high-level logic should depend on abstractions rather than concrete implementations
Why Teams Use It
- reduces fragile coupling
- supports cleaner extension points
- improves unit testing and substitution
- helps keep domain logic separate from infrastructure details
Limits
SOLID is useful as a design lens, but applying it mechanically can also create over-abstraction. The source notes place it in the context of avoiding unnecessary complexity, not generating more of it.
Relationships
- Hexagonal Architecture — dependency inversion and separation of concerns support ports-and-adapters designs
- Software Engineering Practices — SOLID is one of the recurring design heuristics in the engineering notes
References
- SOLID Training 2021
- _Best Practice of Software Engineering and Architecture