In the last post I wrote that “Design principles are quite generic and abstract that rarely help concretely a developer during the process of software design”.
In this post I report a list of Software Design principles that I have mined from several books, papers.
Source: [Gamma et all, "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, 1995]
- Program an Interface not an Implementation
- Favor Composition Versus Inheritance
- Find what varies and encapsulate it
Source: [R. Martin, “Agile Software Development, Principles, Patterns, and Practices”, Prentice-Hall, 2002]
- Dependency-Inversion Principle
- Liskov Substitution Principle
- Open-Closed Principle
- Interface-Segregation Principle
- Reuse/Release Equivalency Principle
- Common Closure Principle
- Common Reuse Principle
- Acyclic Dependencies Principle
- Stable Dependencies Principle
- Stable Abstraction Principle


Profile