Skratka YAGNI znamená “You Aren’t Gonna Need It”, čo v preklade znamená „Nebudeš to potrebovať“. Ide o princíp softvérového vývoja, ktorý zdôrazňuje, že by ste nemali pridávať funkcionalitu alebo kód, ktorý aktuálne nie je potrebný.
Hlavná myšlienka YAGNI:
•Vývojári majú často tendenciu pridávať do kódu funkcie alebo riešenia, ktoré predpokladajú, že budú potrebné v budúcnosti.
•YAGNI tvrdí, že takáto funkcionalita by sa nemala implementovať, pokiaľ nie je momentálne skutočne potrebná.
Príklad:
Bez YAGNI:
Vývojár implementuje funkciu na podporu viacerých jazykov, aj keď aplikácia momentálne potrebuje iba angličtinu.
def translate(text, language):
if language == “en”:
return text
elif language == “es”:
# Hypotetická podpora pre španielčinu
return “traducción no disponible”
else:
return “translation unavailable”
S YAGNI:
Implementuje len to, čo je potrebné teraz:
def translate(text):
return text
Prečo používať YAGNI:
1.Minimalizácia zbytočnej práce:
•Funkcie, ktoré sa nikdy nepoužijú, sú stratou času.
2.Jednoduchosť:
•Menej kódu znamená menej potenciálnych chýb a jednoduchšiu údržbu.
3.Rýchlejší vývoj:
•Sústreďte sa len na aktuálne požiadavky projektu.
4.Realistickosť:
•Požiadavky na projekt sa môžu zmeniť, a pridávanie predpokladanej funkcionality môže byť zbytočné.
YAGNI a Agile:
•YAGNI je úzko spojené s Agile metodológiou, ktorá sa zameriava na iteratívny vývoj a plnenie aktuálnych priorít.
•Princíp “Rob len to, čo je potrebné práve teraz” je základom efektívneho plánovania sprintov.
Nevýhody ignorovania YAGNI:
•Zbytočná zložitosť: Komplexné systémy s nepoužitým kódom.
•Ťažká údržba: Ťažšie pochopenie kódu a oprava chýb.
•Nedostatok času: Zameranie na nepodstatné funkcie môže oddialiť dokončenie projektu.
Kedy YAGNI neplatí:
•Ak vývoj dlhodobo predpokladá určité rozšírenia (napr. škálovanie veľkých systémov).
•Pri návrhu architektúry, kde je dôležité myslieť na budúcu rozšíriteľnosť.
Zhrnutie:
YAGNI pomáha udržiavať kód jednoduchý, čitateľný a efektívny. Je to nástroj proti zbytočnému plánovaniu a predčasnej optimalizácii, ktoré môžu spomaliť vývoj a zhoršiť kvalitu softvéru.