SOLID principles
The set of five design principles for object-oriented programming that were first introduced by Robert C. Martin. These principles are intended to make software designs more understandable, flexible, and maintainable.
Single Responsibility Principle
A class should have only one reason to change.
Open/Closed Principle
Software entities should be open for extension but closed for modification.
Liskov Substitution Principle
Objects of a superclass should be replaceable with objects of its subclasses without breaking the application.
Interface Segregation Principle
Many client-specific interfaces are better than one general-purpose interface.
Dependency Inversion Principle
Depend upon abstractions, not concretions.
These principles provide a foundation for writing maintainable code that can evolve over time without becoming a tangled mess.