The SOLID principles are a set of five principles of object-oriented programming.
The purpose of the these principles is to guide developers in creating software that is easy to maintain, extend, and understand.
Each letter has one meaning:
A class must have one, and only one, reason to change.
Objects or entities must be open for extension, but closed for modification.
A derived class must be replaceable by its base class.
A class should not be forced to implement interfaces and methods that it will not use.
Depend on abstractions, not implementations.