Explore Topics
In 2000, Robert C. Martin distilled a decade of object-oriented design wisdom into a short paper, "Design Principles and Design Patterns". Five of those principles — picked out and rearranged into a memorable acronym by Michael Feathers — became SOLID. The goal is narrow: produce code that many developers can collaboratively change without breaking each other's work. Every letter targets a different failure mode of object-oriented systems: tangled responsibilities, brittle conditionals, broken hierarchies, fat interfaces, and hardwired dependencies. Mastering SOLID is the bridge between knowing OO syntax and writing OO software that lives.
- Robert C. Martin — "Design Principles and Design Patterns" (Object Mentor, 2000)
- Michael Feathers rearranged Martin's principles into the SOLID acronym
- S = Single Responsibility · O = Open-Closed · L = Liskov Substitution
- I = Interface Segregation · D = Dependency Inversion
- All five operate at the CLASS level — they are not architecture rules
- Goal: understandable, readable, testable code that teams can change in parallel
- ✦Provides a shared vocabulary for code reviews and design discussions
- ✦Each principle has a single, memorable, transferable sentence
- ✦Maps cleanly to Java mechanisms (interface, abstract class, DI)
- ✦Catches design smells before they harden into legacy debt
- △Easy to over-apply — splitting too aggressively creates "lasagna code"
- △Some principles (LSP, DIP) require runtime testing to verify, not just inspection
- △No single principle is a complete answer; they only work together
- △Critics argue the acronym is mnemonic, not rigorous