SOLID principles were introduced by Robert C.Martin (Uncle Bob). - Robert Cecil Martin

What does SOLID stand for?

S – Single Responsibility Principle
A class should have one and only one reason to change, meaning that a class should have only one job

O – Open Closed Principle
Software entities (classes, modules, functions, etc.) should be open for extension but closed for modification.

L – Liskov Substitution Principle
Every subclass or derived class should be substitutable for its base or parent class

I – Interface Segregation Principle
Clients should not be forced to depend upon interfaces that they do not use.

D – Dependency Inversion Principle
Entities must depend on abstractions, not on concretions.
High-level modules should not depend on low-level modules, both should depend on abstractions.
Abstractions should not depend on details. Details should depend on abstractions.