SOLID je mnemotechnická pomůcka pro pět pravidel, která pomáhají programátorům vyhnout se „hnilobě softwaru“ (situaci, kdy je kód tak složitý, že každá změna způsobí chybu na jiném místě).
Princip jedné odpovědnosti: Každá třída by měla mít pouze jednu odpovědnost a tedy pouze jeden důvod ke změně.
Report, která generuje data, formátuje je do PDF a zároveň je odesílá e-mailem.Report pro data, PdfGenerator pro formát a EmailSender pro odeslání.Princip otevřenosti/uzavřenosti: Softwarové entity by měly být otevřené pro rozšiřování, ale uzavřené pro modifikaci.
Liskovové princip zastupitelnosti: Objekty v programu by měly být nahraditelné svými potomky, aniž by se změnila správnost programu.
Pstros dědí od třídy Ptak, ale metoda let() u pštrosa vyhodí chybu (protože pštros nelétá), je tento princip porušen. Potomek nesmí omezovat schopnosti rodiče.Princip oddělení rozhraní: Klienti by neměli být nuceni záviset na metodách, které nepoužívají.
IMultifunkce) je lepší vytvořit více malých (ITiskarna, ISkener, IFax). Program, který jen tiskne, by neměl být nucen implementovat metodu pro faxování.Princip obrácení závislostí: Moduly na vyšší úrovni by neměly záviset na modulech na nižší úrovni. Oba by měly záviset na abstrakcích (rozhraních).
Eshop by neměla přímo vytvářet objekt PayPal, ale měla by vyžadovat jakoukoliv IPlatebniMetoda. To umožní kdykoliv přidat jinou platební metodu bez zásahu do kódu e-shopu.| Výhoda | Popis |
|---|---|
| Udržovatelnost | Snadnější hledání a oprava chyb v izolovaných třídách. |
| Testovatelnost | Malé třídy s jasnou odpovědností se mnohem lépe testují. |
| Znovupoužitelnost | Kód lze snadněji přenášet do jiných projektů. |
| Týmová práce | Jasně definované hranice mezi moduly umožňují souběžný vývoj. |
Související pojmy: OOP, Class, Dědičnost, Polymorfismus, Interface, Abstraktní třída, DRY princip.