**SOLID** is a set of five programming design principles that are generally agreed to apply to [[Object-Oriented Programming|object-oriented programming]] in particular, but coding in general. This is, of course, depending on the specifics; but one should try to always bear them in mind.
These principles are:
- [[Single Responsibility Principle]]
- [[Open-Closed Principle]]
- [[Liskov Substitution]]
- [[Interface Segregation]]
- [[Dependency Inversion]]
The final goal of SOLID is **decoupling our code**, and enable us to test, evaluate and substitute each piece with as less implication is the rest of our codebase.