Skip to content

Instantly share code, notes, and snippets.

@alferov
Last active December 21, 2017 10:01
Show Gist options
  • Save alferov/e85863cbaa2143308a25d24bdb101833 to your computer and use it in GitHub Desktop.
Save alferov/e85863cbaa2143308a25d24bdb101833 to your computer and use it in GitHub Desktop.
SOLID (single responsibility, open-closed, Liskov substitution, interface segregation and dependency inversion) principles
  • Single responsibility principle (SRP): This principle states that software component (function, class or module) should focus on one unique tasks (have only one responsibility).
  • Open/closed principle (OCP): This principle states that software entities should be designed with the application growth (new code) in mind (be open to extension), but the application growth should require the smaller amount of changes to the existing code as possible (be closed for modification).
  • Liskov substitution principle (LSP): This principle states that we should be able to replace a class in a program with another class as long as both classes implement the same interface. After replacing the class no other changes should be required and the program should continue to work as it did originally.
  • Interface segregation principle (ISP): This principle states that we should split interfaces which are very large (general-purpose interfaces) into smaller and more specific ones (many client-specific interfaces) so that clients will only have to know about the methods that are of interest to them.
  • Dependency inversion principle (DIP): This principle states that entities should depend on abstractions (interfaces) as opposed to depend on concretion (classes).

Reference: https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment