Skratka SOLID označuje sadu piatich princípov objektovo orientovaného programovania (OOP), ktoré pomáhajú vývojárom písať udržiavateľný, čitateľný a flexibilný kód. Tieto princípy definoval Robert C. Martin (známy ako Uncle Bob) a sú základom dobre navrhnutého softvéru.
SOLID princípy:
1.S – Single Responsibility Principle (SRP):
•Princíp jednej zodpovednosti:
Každá trieda by mala mať iba jednu zodpovednosť, resp. jednu jasne definovanú úlohu.
•Cieľ: Uľahčiť údržbu a zmenu kódu, keď sa zmenia požiadavky.
•Príklad:
class Report:
def generate(self):
# Generovanie reportu
class ReportPrinter:
def print(self, report):
# Tlač reportu
2.O – Open/Closed Principle (OCP):
•Princíp otvorenosti/zatvorenosti:
Triedy, moduly a funkcie by mali byť otvorené na rozšírenie, ale zatvorené na modifikáciu.
•Cieľ: Umožniť rozšírenie funkcionality bez úprav existujúceho kódu.
•Príklad:
class Shape:
def area(self):
pass
class Rectangle(Shape):
def area(self):
return self.width * self.height
3.L – Liskov Substitution Principle (LSP):
•Princíp Liskovovej substitúcie:
Subtriedy by mali byť nahraditeľné za svoje nadradené triedy bez toho, aby sa narušila funkcionalita programu.
•Cieľ: Zachovať konzistentnosť a správne správanie pri dedičnosti.
•Príklad:
Ak trieda Bird má metódu fly, potom subtrieda Sparrow musí implementovať fly konzistentne.
4.I – Interface Segregation Principle (ISP):
•Princíp segregácie rozhraní:
Rozhrania by mali byť špecifické a malé, aby klienti nemuseli implementovať metódy, ktoré nepoužívajú.
•Cieľ: Rozdeľovať veľké rozhrania na menšie špecializované rozhrania.
•Príklad:
class Printer:
def print(self): pass
class Scanner:
def scan(self): pass
5.D – Dependency Inversion Principle (DIP):
•Princíp inverzie závislostí:
Vysokoúrovňové moduly by nemali byť závislé od nízkoúrovňových modulov. Obe by mali závisieť na abstrakciách.
•Cieľ: Minimalizovať priame závislosti medzi komponentmi.
•Príklad:
class Database:
def get_data(self):
pass
class App:
def __init__(self, db: Database):
self.db = db
Výhody SOLID:
1.Udržiavateľnosť: Kód je ľahšie čitateľný a opraviteľný.
2.Flexibilita: Jednoduchšie pridávanie nových funkcionalít.
3.Opätovná použiteľnosť: Kód je modulárny a viac využiteľný.
4.Testovateľnosť: Lepšie štruktúrovaný kód zjednodušuje jednotkové testy.
Príklad použitia v praxi:
Pri návrhu veľkých systémov alebo pri práci v tíme je aplikácia SOLID princípov neoceniteľná, pretože minimalizuje chyby spôsobené zmenami a uľahčuje rozšírenia.
SOLID je základný návod na písanie kvalitného objektovo orientovaného kódu, ktorý je robustný, flexibilný a ľahko udržiavateľný.