Princípy objektovo orientovaného programovania SOLID

158

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.

Single Responsibility Principle

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.

Liskov Subtitution princíp

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.

Interface Segregation Principle

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.

Dependency Inversion Principle

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.

Dobrý článok? Chceš dostávať ďalšie?

Už viac ako 6 200 ITečkárov dostáva správy e-mailom. Nemusíš sa báť, nie každé ráno. Len občasne.

Súhlasím so spracovaním mojich osobných údajov. ( Viac informácií. )

Tvoj email neposkytneme 3tím stranám. Posielame naňho len informácie z robime.it. Kedykoľvek sa môžeš odhlásiť.