**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.