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

DevOps Enginner / Online Bezpečnosť

Pre IT spoločnosť, ktorá sa venuje online bezpečnosti hľadáme do tímu DevOps Medior Engineer. Spoločnosť má 20-členný tím s...

Senior Java Consultant

Hľadáš, kam by si sa posunul? Možno ťa táto práca zaujme. Ide o Senior JAVA konzultanta v nadnárodnej IT...

Ruby on Rails Junior-Medior Developer / REMOTE

Je tvoj život príliš v “koľajniciach”? Urob si odbočku a skús sa pridať do tímu Ruby on Rails developerov.Ide...

JS Sencha Senior Developer / Homeoffice

Máš rád svoju slobodu, pracuješ na projektoch, ideálne remote? Pre medzinárodnú softwarovú spoločnosť hľadáme JS Sencha Developera.Po dvoch týždňoch...

Junior Angular Developer / REMOTE

Pre nášho partnera hľadáme ITčkára na pozíciu Angular Developer. Spoločnosť sa venuje vývoju platformy pre firmy na znižovanie nákladov...

Frontend Medior Developer

Medzinárodná IT spoločnosť, ktorá vyvíja finančný softvér.Práca je v Bratislave na TPP. Odmena sa pohybuje od 2000+ EUR.Tvoje úlohy...

.NET Core Medior Developer / REMOTE

Svoju budúcnosť máš vo svojich rukách, skús to teraz ako .NET Core developer. Ide o startup projekt, ktorý vyvíja...

GIRL ́S DAY 2020: Už po siedmy raz môžu stredoškoláčky nahliadnuť do IT firiem po celom Slovensku.

Občianske združenie Aj Ty v IT už siedmy rok prepája IT firmy a organizácie so stredoškoláčkami po...

DIGITALEUROPE: Na digitalizáciu pôjde z plánu obnovy až pätina prostriedkov. Ako zareaguje Slovensko?

Výzva v podobe zníženej globálnej konkurencieschopnosti, ako aj kríza spojená s pandémiou postavili Európu...

OpenSlava 2020 tentokrát online!

OpenSlava 2020 je 8. ročník úspešnej konferencie pre IT komunitu na Slovensku...

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