YAGNI znamená Nebudete to potřebovat. Je to princip ve vývoji softwaru, který navrhuje, aby vývojáři implementovali pouze funkce, které jsou nezbytné pro současné požadavky, a nepřidávali žádné další funkce, které by mohly být potřebné v budoucnu. Tento princip je založen na myšlence, že přidávání nepotřebných funkcí může vést ke zvýšené složitosti, delší době vývoje a potenciálně většímu počtu chyb.
Princip YAGNI úzce souvisí s POLIBEK princip (Keep It Simple, Stupid), který obhajuje jednoduchost v designu a vyhýbání se zbytečné složitosti. Oba principy povzbuzují vývojáře, aby se soustředili na dodání nejjednoduššího řešení, které vyhovuje současným požadavkům, spíše než aby se snažili předvídat a vycházet vstříc potenciálním budoucím potřebám.
Co je YAGNI Principal
Obsah
- Co je YAGNI?
- Jak se YAGNI implementuje?
- YAGNI vs jiné principy
- Příklady YAGNI
- Výhody YAGNI
- Nejčastější dotazy společnosti YAGNI
Co je YAGNI?
YAGNI je princip, který povzbuzuje vývojáře, aby se vyhýbali přidávání funkcí nebo funkcí do systému, dokud nejsou výslovně vyžadovány. Vychází z předpokladu, že přidávání nepotřebných funkcí může vést ke zvýšené složitosti, delší době vývoje a potenciálně většímu počtu chyb. Místo toho by se vývojáři měli zaměřit na dodání co nejjednoduššího řešení, které odpovídá současným požadavkům.
YAGNI je odvozeno z extrémního programování .
Proč by se měl vývojář řídit principem YAGNI?
Vývojář by se měl řídit zásadami YAGNI z následujících důvodů:
- Náklady na stavbu: Náklady na sestavení představují množství času, úsilí a zdrojů vynaložených na vytvoření funkce nebo řešení. Zahrnuje vše od plánování a kódování až po testování. Pokud postavíte něco, co se ukáže, že to není potřeba, náklady na sestavení představují investici, kterou jste do toho vložili.
- Cena zpoždění: Náklady na zpoždění jsou promarněná příležitost nebo ekonomický dopad nedodání funkce nebo řešení rychle. Pokud trávíte čas méně kritickými funkcemi, můžete zpozdit implementaci důležitějších. Toto zpoždění může mít za následek promarněné příležitosti k výnosům nebo jiným výhodám.
- Náklady na přepravu: Náklady na přenos představují pokračující potíže a práci navíc způsobenou konkrétní funkcí ve vašem softwaru. Když funkce zvyšuje složitost, může to ztížit práci na jiných částech softwaru, což vede k dodatečnému času a úsilí. Je to jako nést nadbytečnou váhu a snažit se jít vpřed.
- Náklady na opravu: Náklady na opravu, známé také jako technický dluh, jsou průběžné náklady spojené s opravou chyb, chyb nebo špatných rozhodnutí učiněných během vývoje funkce. Pokud postavíte něco, co vyžaduje úpravy později, řešení těchto problémů vyžaduje další čas a zdroje, podobně jako splacení dluhu.
Proč by měl vývojář následovat princip YAGNI
java spánek
Proč je YAGNI důležité?
YAGNI je důležité, protože pomáhá udržet vývoj softwaru zaměřený a efektivní. Pouze implementací funkcí, které jsou nezbytné, se vývojáři mohou vyhnout plýtvání časem a zdroji na zbytečné funkce. To může vést k rychlejšímu vývoji, snížené složitosti a lépe udržovatelné kódové základně.
Myšlenka za YAGNI
Chcete-li používat YAGNI jako vývojáře, je to jako mít praktického průvodce, díky kterému bude vaše práce soustředěná a efektivní.
YAGNI ředitel pro vývojáře
1. Získejte potřebné požadavky
Všechny věci, které váš projekt potřebuje, seřaďte je do těch, které musíte mít a můžete počkat. To vám pomůže přesně vědět, na čem pracovat. Ať už si to napíšete na papír nebo napíšete na obrazovku, seznam vám zajistí pořádek.
2. Diskutujte se svým týmem
Poté je čas promluvit si se svým týmem. Podělte se s nimi o své plány a cíle. Díky tomu jsou všichni na stejné stránce a rozumí tomu, co je třeba udělat. Je to jako být kapitánem týmu a zajistit, aby všichni hráli stejnou hru.
3. Analyzujte jednoduchý plán řešení
Nyní, když dojde na plánování skutečné práce, zachovejte to jednoduše. Rozdělte své velké cíle na menší úkoly. To vám pomůže vyhnout se přetížení a zajistí, že se soustředíte na to, co je skutečně důležité. Představte si to jako vytvoření podrobného plánu pro váš projekt.
4. Odmítněte, pokud se nehodí pro řešení
Někdy může váš tým přijít s novými nápady nebo chtít přidat další věci. I když tyto nápady mohou být skvělé, musíte být připraveni říci ne, pokud se nejedná o malé zlepšení. Říct ne může být těžké, ale zabrání vám to sejít z cesty a nedodržet termíny.
mycricketlive
5. Mějte záznam o svém pokroku
Zaznamenejte si, co jste udělali. Je to jako udržovat skóre ve hře. To vám pomůže zjistit, jak daleko jste došli a zda jdete správným směrem. Nástroje, které vám pomohou řídit tento proces, jsou jako výsledkové tabulky pro vývojáře, které jim pomáhají zůstat na správné cestě a poskytovat to, co zákazníci skutečně potřebují.
YAGNI vs jiné principy
YAGNI (You Are’t Gonna Need It) je princip vývoje softwaru, který nedoporučuje přidávat funkce, dokud to nebude nutné. V několika ohledech kontrastuje s jinými principy:
- KISS (Keep It Simple, Stupid) : KISS je princip, který obhajuje jednoduchost v designu a vyhýbání se zbytečné složitosti. YAGNI doplňuje KISS tím, že doporučuje nepřidávat zbytečné funkce, které mohou vést ke zvýšené složitosti.
- SUCHÝ (neopakujte se) : DRY je princip, který obhajuje opětovné použití kódu a zamezení duplicitě. Zatímco DRY se zaměřuje na eliminaci nadbytečného kódu, YAGNI se zaměřuje na vyhnutí se zbytečným funkcím.
- PEVNÝ : SOLID je sada principů pro objektově orientovaný design, které podporují modulární, udržovatelný a škálovatelný kód. Zatímco principy SOLID se zaměřují na design a architekturu kódu, YAGNI se zaměřuje na funkčnost kódu.
- TDD (Test-Driven Development) : TDD je vývojový proces, který zahrnuje psaní testů před napsáním kódu. TDD se zaměřuje na psaní testů pro řízení vývojového procesu, zatímco YAGNI se zaměřuje na vyhýbání se zbytečným funkcím.
- Agilní : Agile je soubor principů a postupů pro vývoj softwaru, který klade důraz na spolupráci, flexibilitu a zpětnou vazbu od zákazníků. YAGNI lze považovat za agilní princip, protože povzbuzuje vývojáře, aby se nejprve zaměřili na poskytování nejdůležitějších funkcí a přizpůsobili se měnícím se požadavkům.
Zde je srovnání YAGNI s dalšími principy vývoje softwaru založenými na aspektech YAGNI a jak je řeší jiné principy:
Aspekt YAGNI | Jak to řeší jiné principy | Jak to YAGNI řeší |
---|---|---|
Jednoduchost | Další principy, jako je KISS (Keep It Simple, Stupid), také obhajují jednoduchost v designu a vyhýbání se zbytečné složitosti. | YAGNI doplňuje KISS tím, že doporučuje nepřidávat zbytečné funkce, které mohou vést ke zvýšené složitosti. |
Účinnost | Další principy, jako je Agile a Lean Software Development, kladou důraz na poskytování hodnoty zákazníkovi a eliminaci plýtvání. | YAGNI se zaměřuje na dodání nejjednoduššího řešení, které odpovídá současným požadavkům, což může vést k rychlejším vývojovým cyklům a efektivnějšímu využití zdrojů. |
Flexibilita | Další principy, jako je Agile a Scrum, zdůrazňují spolupráci, flexibilitu a přizpůsobování se měnícím se požadavkům. | YAGNI vyzývá vývojáře, aby se nejprve zaměřili na poskytování nejdůležitějších funkcí a přizpůsobili se měnícím se požadavkům. |
Snížení rizika | Další principy, jako je Test-Driven Development (TDD) a Continuous Integration (CI), se zaměřují na poskytování vysoce kvalitního kódu, který odpovídá současným požadavkům. | YAGNI nedoporučuje přidávat zbytečné funkce, které mohou snížit riziko zanesení chyb a dalších problémů do kódové základny. |
Zaměření na uživatele | Další principy, jako je Agile a Lean Software Development, se zaměřují na poskytování hodnoty zákazníkovi. | YAGNI pomáhá soustředit se na poskytování nejdůležitějších funkcí jako první, což může zajistit, že software splňuje potřeby a očekávání uživatele. |
Úspory nákladů | Další principy, jako je Agile a Lean Software Development, se zaměřují na eliminaci plýtvání a poskytování hodnoty zákazníkovi. | YAGNI může vést k úsporám nákladů tím, že se vyhne zbytečným funkcím a zaměří se na poskytování nejdůležitějších funkcí jako první. |
Udržitelnost | Další principy, jako je SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), se zaměřují na design a architekturu kódu. | YAGNI pomáhá udržovat kódovou základnu jednoduchou a soustředěnou, což usnadňuje její pochopení a údržbu. |
Celkově YAGNI doplňuje další principy vývoje softwaru tím, že se zaměřuje na dodání nejjednoduššího řešení, které splňuje současné požadavky, a vyhýbá se zbytečným funkcím.
Příklady YAGNI
Zde je několik příkladů, jak lze YAGNI použít:
- Funkce Creep se vyhnula : Vývojový tým pracuje na webové aplikaci. Původně plánují zahrnout funkci, která uživatelům umožní vytvářet a sdílet vlastní avatary. Po zvážení času a zdrojů potřebných k implementaci této funkce se však rozhodnou tuto funkci odložit, dokud neobdrží zpětnou vazbu od uživatelů, která naznačuje, že je to nutné.
- Snížení složitosti : Vývojář pracuje na mobilní aplikaci, která uživatelům umožňuje sledovat jejich cvičební rutiny. Zpočátku plánují zahrnout funkci, která automaticky generuje personalizované cvičební plány na základě kondičních cílů uživatele. Po zvážení složitosti implementace této funkce a potenciálního dopadu na výkon aplikace se však rozhodnou zůstat u jednoduššího přístupu, který uživatelům umožňuje vytvářet vlastní cvičební plány ručně.
- Přidělení zdrojů : Vývojový tým pracuje na platformě elektronického obchodování. Původně plánují zahrnout funkci, která uživatelům umožní vytvářet seznam přání a sdílet je s přáteli. Po zvážení omezeného času a zdrojů dostupných pro projekt se však rozhodnou zaměřit se na jiné funkce, které jsou pro úspěch platformy důležitější.
- Správa rozsahu : Vývojový tým pracuje na softwarovém projektu pro klienta. Klient nejprve požaduje několik dalších funkcí, o kterých se domnívá, že budou nezbytné pro úspěch projektu. Po zvážení rozpočtu a časové osy projektu se však vývojový tým rozhodne omezit rozsah projektu tak, aby zahrnoval pouze nejkritičtější funkce.
- Vývoj řízený zpětnou vazbou : Vývojový tým pracuje na novém softwarovém produktu. Původně plánují zahrnout funkci, která uživatelům umožní poskytovat zpětnou vazbu o výkonu produktu. Po zvážení možného dopadu na použitelnost produktu a času potřebného k implementaci této funkce se však rozhodnou odložit ji, dokud neobdrží zpětnou vazbu od uživatelů, že je to nutné.
Výhody YAGNI
Přínosy YAGNI (You Aren’t Gonna Need It) při vývoji softwaru jsou četné a mohou mít významný dopad na proces vývoje, kvalitu finálního produktu a celkový úspěch projektu. Zde jsou některé z klíčových výhod:
- Rychlejší rozvoj : Zaměřením se pouze na to, co je v danou chvíli potřeba, se vývojáři mohou vyhnout tomu, aby trávili čas funkcemi, které možná nikdy nepoužijí. To může vést k rychlejším vývojovým cyklům a efektivnějšímu využívání zdrojů.
- Jednoduchost : Nepotřebné funkce mohou zvýšit složitost kódové základny, což ztěžuje její údržbu a pochopení. YAGNI pomáhá udržovat kódovou základnu jednoduchou a soustředěnou, což vývojářům usnadňuje práci.
- Flexibilita : Vyhnutím se zbytečným funkcím mohou vývojáři udržet kódovou základnu flexibilní a přizpůsobivou změnám. To může být zvláště důležité v rychle se měnícím prostředí, kde se požadavky mohou často měnit.
- Snížené riziko : Nepotřebné funkce mohou do kódové základny zanést chyby a další problémy. Vyhnutím se těmto funkcím mohou vývojáři snížit riziko zanesení chyb a dalších problémů do kódové základny.
- Zaměření na uživatele : YAGNI pomáhá udržet zaměření na poskytování hodnoty koncovému uživateli. Pouze implementací funkcí, které jsou pro uživatele nezbytné, mohou vývojáři zajistit, že software splňuje potřeby a očekávání uživatele.
- Úspora nákladů : Vyhnutím se zbytečným funkcím mohou vývojáři ušetřit čas a zdroje, které by jinak vynaložili na implementaci a údržbu těchto funkcí. To může vést k úspoře nákladů organizace.
- Vylepšená údržba : Jednodušší kódová základna je snazší pochopit a udržovat, což vývojářům usnadňuje provádění změn a opravy chyb.
- Lepší uživatelský zážitek : Tím, že se vývojáři zaměří na poskytování nejdůležitějších funkcí jako první, mohou zajistit, že uživatelé získají funkce, které potřebují, dříve, což povede k lepší celkové uživatelské zkušenosti.
Závěr
Princip YAGNI může být cenný v různých aspektech vývoje softwaru. Podporuje jednoduchost, snižuje zbytečnou složitost a pomáhá týmům soustředit se na poskytování základních funkcí. Zvažováním YAGNI mohou vývojáři zvýšit produktivitu, udržovatelnost a celkový úspěch projektu. Je však důležité udělat rovnováhu a nevykládat si YAGNI nesprávně jako omluvu pro zanedbávání prozíravosti nebo architektonických úvah.
shloka mehta vzdělání
Nejčastější dotazy společnosti YAGNI
Q1. Jaké jsou kritiky YAGNI?
Někteří lidé říkají, že YAGNI má nevýhodu. Argumentují tím, že pokud přemýšlíte jen o tom, co potřebujete právě teď, a ignorujete potenciální budoucí potřeby, možná budete muset později, když se objeví nové požadavky, spoustu své práce předělat.
Q2. Jaká jsou pravidla YAGNI?
Nebudete to potřebovat. YAGNI je princip vývoje softwaru odvozený z extrémního programování (XP), který říká, že programátor by neměl přidávat další funkce, dokud to není nutné.
Q3. Jaké jsou argumenty ve prospěch principu YAGNI?
Je zabráněno tečení funkcí, což znamená, že vývojář nebude používat funkce, které v budoucnu téměř nevyužije.
Q4. Jaký je rozdíl mezi SOLID a YAGNI?
SOLID očekává, že budete mít představu, i když je to jen trochu, o tom, jak by se kód mohl v budoucnu změnit, zejména díky principu jednotné odpovědnosti (SRP). Je to jako doufat, že můžete předvídat některé věci. Na druhou stranu YAGNI předpokládá, že většinu času nevíte, kam kód v budoucnu směřuje. Je to jako trochu pochybovat o naší schopnosti předvídat.