SOLID principles
S stands for SRP (Single responsibility principle):- A class should take care of only one responsibility. O stands for OCP (Open closed principle):- Extension should be preferred over modification. L stands for LSP (Liskov substitution principle):- A parent class object should be able to refer child objects seamlessly during runtime polymorphism. I stands for ISP (Interface segregation principle):- Client should not be forced to use a interface if it does not need it. D stands for DIP (Dependency inversion principle) :- High level modules should not depend on low level modules but should depend on abstraction.