SOLID je mnemotechnický akronym pro 5 principů které vedou k psaní lepšího software. Autorem je Robert Cecil Martin.
Princip jedné odpovědnosti (Single-responsibility principle)
Každý objekt by měl mít jednu odpovědnost (být zodpovědný za jednu konkrétní věc), služby, které jsou od objektu očekávány, by měly být spjaty s touto odpovědností.
Open-closed
Třída by měla být otevřena rozšířením, ale uzavřená pro modifikaci.
Liskov substitution
DEF1a: Nechť q(x) je vlastnost prokazatelná objektu x typu T. Potom q(y) jsou pravdivé pro objekty y typu S, kde S je potomkem T. DEF1b: Instance podtypu se musí dát použív všude, kde lze použít instanci nadtypu.
Interface segregation
Princip oddělení rozhraní říká, že každé rozhraní by mělo být co nejmenší možné a třídy by neměly být nuceny používat rozhraní, která nepoužívají. Několik specifických interfaců může být lepší než jeden obecný.
Dependency inversion
Závislost na abstrakcích, nikoliv na implementacích.