-
Single responsibility principle - A class should have only one reason to change.
-
Open/Closed principle - Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
-
Liskov Substitution Principle - Child classes should never break the parent class type definitions.
-
Interface Segregation Principle - No client should be forced to depend on methods it does not use.
-
Dependency inversion principle - High-level modules should not depend on low-level modules. Both should depend on abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.
is an acronym for the first five object-oriented design(OOD) principles by Robert C. Martin, popularly known as Uncle Bob.
These principles, when combined together, make it easy for a programmer to develop software that are easy to maintain and extend. They also make it easy for developers to avoid code smells, easily refactor code, and are also a part of the agile or adaptive software development.