SOLID is five object-oriented design principles formulated by Robert Martin. Together they describe how to write code that is easy to read, test, and change.
Five principles
S — Single Responsibility — a class should have only one reason to change. A UserService should not simultaneously send emails and write to the database
O — Open/Closed — open for extension, closed for modification. Add new behaviour through new classes, not by changing existing ones
L — Liskov Substitution — a subclass must be substitutable for its parent without altering the program's behaviour
I — Interface Segregation — prefer several narrow interfaces over one wide one. A client should not depend on methods it does not use
D — Dependency Inversion — depend on abstractions, not on concrete implementations