SOLID: Design Principles and Design Patterns
In Design Principles and Design Patterns, Robert C. Martin presented the SOLID principles of object-oriented software design over twenty years ago. “SOLID” continues to be a buzzword included in many resumes today. The principles are reproduced here:
- A class should have only one reason to change.
- A module should be open for extension but closed for modification.
- Subclasses should be substitutable for their base classes.
- Depend upon abstractions. Do not depend upon concretions.
- Many client-specific interfaces are better than one general purpose interface.
Developing SOLID software is developing software that consists of minimalist components with well-defined abstractions or interfaces that are resistant to software rot caused by requirements changes.
Martin’s original paper includes a draft bibliography. Software engineers looking for additional reading may be interested in the bibliography’s “OOSC98” entry, which likely refers to Bertrand Meyer’s Object-Oriented Software Construction. It is made available by the author, reserving all copyrights, including the rights to distribution.