Blog Princípy objektovo orientovaného programovania SOLID

Princípy objektovo orientovaného programovania SOLID

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.

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

Jaroslav Beňo
Jaroslav Beňohttp://www.jaroslavbeno.sk
Rád sa zdieľam s ľuďmi. Robím videá na YouTube. Sú o programovaní, o Bohu, o jednoduchých návodoch.

Automation Tester

Máš skúsenosti s automatizovaným testovaním? Pre Automatizovaného testera máme príležitosť v oblasti digitálneho bankovníctva. Ide o projekt na kontrakt s odmenou...

Java Junior/Medior Developer

Osamostatni sa a pracuj sólo! Práve teraz je tu príležitosť pre Junior/Medior Java Developera pracovať na projekte pre medzinárodnú...

MS BI Developer / REMOTE

Sprav krok vpred s novým projektom v oblasti bankovníctva. Ide o projekt na kontrakt s dĺžkou trvania 2 roky. Odmena...

Business Development Manager

Máš skúsenosť s aktívnymi akvizíciami SW riešení pre banky/poisťovne? Pre stabilnú československú spoločnosť hľadáme Business Development Managera, ktorý sa vyzná...

Julia Developer / REMOTE

Projekt pre nadšencov Julia a machine learning. Pre spoločnosť, ktorá používa matematické metódy a metódy AI / ML na...

Scala Medior/Senior Developer

Nechceš denne dochádzať do práce? Chcel by si byť súčasťou dlhoročného startupu, len senior ľudia (žiadni študenti) a pracovať...

Junior Scala Developer

Nechceš denne dochádzať do práce? Chcel by si byť súčasťou dlhoročného startupu, len senior ľudia (žiadni študenti) a pracovať...

Toto sme stihli v roku 2020!

Rok 2020 bol určite neobyčajným rokom pre mnohých nielen z oblasti IT. Presunuli sme sa z kancelárií a open...

Tieto projekty získajú podporu z fondu SK-NIC

Poslednú tohtoročnú výzvu Fondu SK-NIC sme vyhlásili 1. septembra 2020 a otvorená bola až do 15. októbra. Do termínu uzávierky prišlo rekordných...

Novoročný AWS meetup o novinkách v cloudových technológiách

Pozývame vás na prvý AWS meetup roku 2021. Samozrejme online. Téma meetupu Každý rok prináša konferencia AWS re:Invent množstvo noviniek v...

Čítaj ďalej:

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