SOLID Design Principles
The SOLID acronym was coined by Michael Feathers and popularized by Robert Martin. Each letter stands for a well-known principle in object-oriented design.
S - Single Responsibility
The methods in a class should be cohesive around a single purpose.
O - Open-Closed
Subclasses should be substitutable for their superclasses.
L - Liskov Substitution
Subclasses should be substitutable for their superclasses.
I - Interface Segregation
Objects should not be forced to depend on methods they don't use.
D - Dependency Inversion
Depend on abstractions, not on concretions.