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

Junior / Senior Java Backend Software Engineer

JOB Position: Java Backend Software Engineer Contract type: TPP, Contract Location: Bratislava Salary Junior: 1500 EUR/Brutto Salary Senior: 2200 EUR/Brutto Rate: 3000 -4000 EUR/monthlyPrimary Job...

Senior Sieťový Špecialista

PRÁCA Pozícia: Sieťový špecialista Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: od 1700+ EUR/Brutto/mesačneHlavné zodpovednosti:Navrhuje architektúru, štruktúru a IP adresácie multiplatformových LAN/MAN/WAN sietí ...

Data Mining Expert

PRÁCA Pozícia: Data Mining Expert Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: od 2000+ EUR/Brutto/mesačneAké výzvy ťa čakajú?Vynikajúca pracovná príležitosť pre nadšenca práca...

Artificial Intelligence Consultant

JOB Position: Artificial Intelligence Consultant Contract type: Full-Time Location: Bratislava Salary: 2000 EUR/Brutto/monthsResponsibilities:conceptual processing and development of the new solutions in the area e.g....

Artificial Intelligence Expert

JOB Position: Artificial Intelligence Expert Contract type: Full-Time Location: Bratislava Salary: 2000 EUR/Brutto/monthsSuccessful adaptation of technologies like machine learning, deep learning, artificial inteligence will determine companies...

Senior Front-end / Angular Developer / Tvorba serverovej a aplikačnej logiky

PRÁCA Pozícia: FE/ Angular developer Pracovný pomer:  TPP, živnosť Miesto práce: Bratislava, Prievidza, Žilina Plat: od 1700+ EUR/Brutto/mesačneNáplň práce:Spolupráca na vývoji SW...

Senior .NET/Angular developer

PRÁCA Pozícia: .NET/Angular developer Pracovný pomer:  TPP Miesto práce: Bratislava, on-site Plat: od 1700+ EUR/Brutto/mesačneČo bude Vašou náplňou práce:spolupodieľanie sa na vývoji SW riešenia...

Nexteria – IT Club

Prednášky, diskusie, workshopy priamo od expertov z praxe.    Prepájame študentov a ľudí, ktorí...

Campus cowork

Campus cowork je medzinárodný coworking v Bratislave s dvoma lokáciami. Campus MLYNY...

Čo sme stihli v roku 2019

Každý rok je niečím špeciálny a rok 2019 nie je výnimkou. 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ť.