SOLID princípy objektovo orientovaného programovania vedú ku kódu, ktorý sa ľahko upravuje a udržiava v čase. SOLID nie je povinnosť, ale mali by sme ich dodržiavať. Postupom času sa ti tieto princípy dostanú pod kožu – treba trpezlivosť a prax. Ani ja sám nie som ešte utvrdený v používaní týchto princípov.
Single Responsibility Principle
Prvým princípom je single responsibility principle – teda princíp jednej zodpovednosti. Je možné napísať triedu, ktorá bude mať na starosti 100 vecí – prístup na databázu, presun dát na view, validovanie, autentifikáciu a podobne. Môžeš to spraviť, ale neznamená, že by si mal.
Každá trieda by mala mať jednu zodpovednosť a nemal by existovať viac ako jeden dôvod, aby sa táto trieda menila. Trieda nemá byť veľká, dĺžka kódu približne na jednu obrazovku. Ak je trieda veľká, mala by sa rozdeliť na menšie triedy.
Napríklad jednoduchá trieda Osoba – má obsahovať základné atribúty, ale nemá obsahovať napríklad metódy pre zobrazenie na konzolu.
Obr. z https://blogs.msdn.microsoft.com
Open close principle
Druhým princípom je open close princíp. Tento princíp hovorí, že kód má byť otvorený– prístupný k rozšíreniu fukncionality, ale nemá byť prístupný – teda má byť uzavretý pre modifikáciu. Teda máme mať triedu napísanú tak, aby som vedel rozšíriť jej funkcionalitu, bez toho aby som niečo modifikoval.
Obr. z https://blogs.msdn.microsoft.com
Liskov Substitution Principle
Tretí princíp Liskov Subtitution princíp vraví o tom, že ak by si nahradil triedu jej sub triedou – teda triedou, ktorá ju rozširuje nemáš mať s tým problém.
Napríklad by si používal triedu Osoba, potom by si vytvoril triedu SuperOsoba, ktorá by rozširovala tiredu Osoba. Tento princíp vraví, že všade kde používaš triedu Osoba, máš vedieť túto triedu Osoba nahradiť triedou SuperOsoba bez toho, aby si musel niečo opravovať alebo upravovať. Má to ísť hneď a dobre.
Porušenie tohto princípu vedie k tomu, že sa poruší „je“ test. Kačka na baterky je kačka, ale kačka nie je kačka na baterky.
Obr. z https://blogs.msdn.microsoft.com
Interface Segregation Principle
Tento princíp hovorí o tom, že máme mať viacero menších rozhraní. Nie jedno obrovské rozhranie. Čo ak potrebuješ použiť len 4 metódy z tohto obrovského rozhrania? Rozsekaj to rozhranie na menšie časti.
Obr. z https://blogs.msdn.microsoft.com
Dependency Inversion Principle
Všade pchať abstrakciu. Moduly by nemali byť na sebe závislé navzájom – ale mali by byť závislé na abstrakcii (abstraktné triedy, rozhrania), ktoré zdieľajú. A samozrejme táto abstrakcia nemá byť závislá na detailoch (implementácii), ale detaily majú byť závislé na abstrakcii.
Ako príklad na obrázku. Máme dve implementácie – dva detaily – lampa a elektrické rozvody. Vieme ich spojiť, tak, že lampu prispájkujeme rovno do elektriky v stene, alebo použijeme rozhranie – zásuvku, na ktorú sa napojím káblom.
Káble v stene sú závislé na zásuvke a nie na lampe. Lamba je závislá na zásuvke, nie na kábloch v stene.
Tu treba povedať, že dependency inversion nie je to isté ako dependency injection.
Obr. z https://blogs.msdn.microsoft.com
Záver
Ak sa chceš o mne dozvedieť viac, tak klikaj na jaroslavbeno.sk alebo ma sleduj na sociálnych sieťach – youtube, facebook, instagram, linkedin.
Ja som Jaro a my sa vidíme, počujeme ak Boh dá nabudúce.
Čaves.