Robert C. Martin collected ten principles dealing with object-oriented design. The first five of them—the so-called SOLID principles— deal with the design of classes:
- Single Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Interface Segregation Principle (ISP)
- Dependency Inversion Principle (DIP)
Then there are three principles of package cohesion:
The last three principles deal with package coupling:
- Acyclic Dependency Principle (ADP)
- Stable Dependencies Principle (SDP)
- Stable Abstractions Principle (SAP)
Origin
- Robert C. Martin: Agile Software Development, Principles, Patterns, and Practices
- https://github.com/unclebob