Co je to YAGNI?
YAGNI je zkratka pro "You Ain't Gonna Need It" (česky: nebudeš to potřebovat) – jeden ze základních principů Extreme Programming a agilního vývoje, který říká: implementuj pouze funkcionalitu, kterou právě teď skutečně potřebuješ, ne to, co si myslíš, že by se mohlo hodit v budoucnu. Tento princip formuloval Ron Jeffries, jeden ze zakladatelů Extreme Programming, jako reakci na častou tendenci vývojářů přidávat "na zásobu" funkce, které by jednou možná někdo mohl potřebovat. Problém je, že většina takových funkcí se nikdy nepoužije – podle různých studií až 64% features v software projektech se používají zřídka nebo nikdy. Přitom každá taková funkce stála čas na návrh, implementaci, testování a dokumentaci. A co hůř, zvyšuje komplexitu kódové základny, což komplikuje údržbu a přidávání skutečně potřebných funkcí. YAGNI vás nutí klást si otázku: "Potřebujeme tuto funkcionalitu právě teď pro aktuální požadavky, nebo ji přidáváme preventivně pro hypotetickou budoucnost?" Pokud je odpověď "pro budoucnost", YAGNI říká: neimplementuj to. Klíčové je rozlišovat YAGNI od špatného designu. YAGNI neznamená hackovat rychlá řešení bez ohledu na architekturu. Znamená to mít flexibilní, čistý základ (clean code, SOLID principy), ale neimplementovat konkrétní funkce, které teď nikdo nepotřebuje. Rozdíl je v tom, že dobrou architekturu je těžké změnit později, zatímco konkrétní funkce můžete snadno přidat, když budou skutečně potřeba.