logo

Čo je princíp YAGNI (Nebudeš to potrebovať)?

YAGNI znamenať Nebudeš to potrebovať. Ide o princíp vývoja softvéru, ktorý navrhuje, aby vývojári implementovali iba funkcie, ktoré sú potrebné pre súčasné požiadavky a nepridávali žiadne ďalšie funkcie, ktoré by mohli byť potrebné v budúcnosti. Tento princíp je založený na myšlienke, že pridávanie nepotrebných funkcií môže viesť k zvýšenej zložitosti, dlhším časom vývoja a potenciálne väčšiemu počtu chýb.

Princíp YAGNI úzko súvisí s KISS princíp (Keep It Simple, Stupid), ktorý obhajuje jednoduchosť v dizajne a vyhýbanie sa zbytočnej zložitosti. Obidva princípy povzbudzujú vývojárov, aby sa zamerali na poskytovanie najjednoduchšieho riešenia, ktoré spĺňa súčasné požiadavky, namiesto toho, aby sa snažili predvídať a vyhovieť potenciálnym budúcim potrebám.



Čo je YAGNI Principal

Obsah

Čo je YAGNI?

YAGNI je princíp, ktorý nabáda vývojárov, aby sa vyhli pridávaniu funkcií alebo funkcií do systému, kým nie sú výslovne požadované. Vychádza z predpokladu, že pridávanie nepotrebných funkcií môže viesť k zvýšenej zložitosti, dlhším časom vývoja a potenciálne väčšiemu počtu chýb. Namiesto toho by sa vývojári mali zamerať na dodanie najjednoduchšieho riešenia, ktoré spĺňa aktuálne požiadavky.



YAGNI je odvodené z extrémneho programovania .

Prečo by sa mal vývojár riadiť princípom YAGNI?

Vývojár by sa mal riadiť princípmi YAGNI z nasledujúcich dôvodov:

  • Náklady na stavbu: Náklady na zostavenie predstavujú množstvo času, úsilia a zdrojov vynaložených na vytvorenie funkcie alebo riešenia. Zahŕňa všetko od plánovania a kódovania až po testovanie. Ak postavíte niečo, čo sa ukáže, že to nie je potrebné, náklady na zostavenie predstavujú investíciu, ktorú ste do toho vložili.
  • Cena oneskorenia: Náklady na oneskorenie sú zmeškaná príležitosť alebo ekonomický dopad rýchleho nedodania funkcie alebo riešenia. Ak trávite čas menej kritickými funkciami, môžete oddialiť implementáciu dôležitejších. Toto oneskorenie môže mať za následok zmeškané príležitosti na výnosy alebo iné výhody.
  • Náklady na prepravu: Náklady na prenos sú pretrvávajúce ťažkosti a práca navyše spôsobená konkrétnou funkciou vo vašom softvéri. Keď funkcia zvyšuje zložitosť, môže to sťažiť prácu na iných častiach softvéru, čo vedie k ďalšiemu času a námahe. Je to ako niesť extra váhu a snažiť sa pohnúť vpred.
  • Náklady na opravu: Náklady na opravu, známe aj ako technický dlh, sú priebežné náklady spojené s opravou chýb, chýb alebo zlých rozhodnutí urobených počas vývoja funkcie. Ak postavíte niečo, čo si vyžaduje úpravy neskôr, riešenie týchto problémov si vyžaduje dodatočný čas a zdroje, podobne ako splatenie dlhu.

Prečo by mal vývojár nasledovať princíp YAGNI



algoritmy triedenia vkladania

Prečo je YAGNI dôležité?

YAGNI je dôležité, pretože pomáha udržať vývoj softvéru zameraný a efektívny. Iba implementáciou funkcií, ktoré sú nevyhnutné, môžu vývojári predísť plytvaniu časom a zdrojmi na zbytočné funkcie. To môže viesť k rýchlejšiemu vývoju, zníženej zložitosti a lepšie udržiavateľnej kódovej základni.

Myšlienka YAGNI

nataša dala

Ak chcete používať YAGNI ako vývojár, je to ako mať praktického sprievodcu, vďaka ktorému bude vaša práca sústredená a efektívna.

YAGNI riaditeľ pre vývojárov

1. Získajte potrebné požiadavky

Všetky veci, ktoré váš projekt potrebuje, zoraďte ich do nevyhnutných vecí a môžete počkať. To vám pomôže presne vedieť, na čom máte pracovať. Či už si to napíšete na papier alebo napíšete na obrazovku, zoznam vám pomôže usporiadať veci.

2. Diskutujte so svojím tímom

Potom je čas porozprávať sa so svojím tímom. Podeľte sa s nimi o svoje plány a ciele. Vďaka tomu sú všetci na rovnakej vlne a rozumejú tomu, čo treba urobiť. Je to ako byť kapitánom tímu a uistiť sa, že všetci hrajú rovnakú hru.

3. Analyzujte jednoduchý plán riešenia

Teraz, keď príde na plánovanie skutočnej práce, urobte to jednoducho. Rozdeľte svoje veľké ciele na menšie úlohy. To vám pomôže vyhnúť sa preťaženiu a zaistí, že sa sústredíte na to, na čom skutočne záleží. Predstavte si to ako zostavenie podrobného plánu pre váš projekt.

4. Odmietnite, ak to nie je vhodné pre riešenie

Niekedy môže váš tím prísť s novými nápadmi alebo chcieť pridať ďalšie veci. Aj keď tieto nápady môžu byť skvelé, musíte byť pripravení povedať nie, pokiaľ nejde o malé zlepšenie. Povedať nie môže byť ťažké, no zabráni vám to zísť z cesty a nedodržať termíny.

5. Majte záznam o svojom pokroku

Zaznamenajte si, čo ste urobili. Je to ako udržiavať skóre v hre. To vám pomôže zistiť, ako ďaleko ste sa dostali a či idete správnym smerom. Nástroje, ktoré vám pomôžu spravovať tento proces, sú ako hodnotiace tabuľky pre vývojárov, ktoré im pomáhajú zostať na správnej ceste a poskytovať to, čo zákazníci skutočne potrebujú.

YAGNI vs iné princípy

YAGNI (You Are’t Gonna Need It) je princíp vývoja softvéru, ktorý neodporúča pridávať funkcie, kým to nebude potrebné. Odlišuje sa od iných princípov niekoľkými spôsobmi:

  1. KISS (Keep It Simple, Stupid) : KISS je princíp, ktorý obhajuje jednoduchosť dizajnu a vyhýbanie sa zbytočnej zložitosti. YAGNI dopĺňa KISS tým, že odporúča nepridávať zbytočné funkcie, čo môže viesť k zvýšenej zložitosti.
  2. SUCHÝ (neopakujte sa) : DRY je princíp, ktorý obhajuje opätovné použitie kódu a predchádzanie duplicite. Zatiaľ čo DRY sa zameriava na elimináciu nadbytočného kódu, YAGNI sa zameriava na vyhýbanie sa nepotrebnej funkcionalite.
  3. PEVNÉ : SOLID je súbor princípov pre objektovo orientovaný dizajn, ktorý podporuje modulárny, udržiavateľný a škálovateľný kód. Zatiaľ čo princípy SOLID sa zameriavajú na dizajn a architektúru kódu, YAGNI sa zameriava na funkčnosť kódu.
  4. TDD (testom riadený vývoj) : TDD je vývojový proces, ktorý zahŕňa písanie testov pred napísaním kódu. TDD sa zameriava na písanie testov na riadenie vývojového procesu, zatiaľ čo YAGNI sa zameriava na vyhýbanie sa zbytočným funkciám.
  5. Agilný : Agile je súbor princípov a postupov pre vývoj softvéru, ktorý kladie dôraz na spoluprácu, flexibilitu a spätnú väzbu od zákazníkov. YAGNI možno považovať za agilný princíp, pretože nabáda vývojárov, aby sa najskôr zamerali na poskytovanie najdôležitejších funkcií a prispôsobili sa meniacim sa požiadavkám.

Tu je porovnanie YAGNI s inými princípmi vývoja softvéru založenými na aspektoch YAGNI a ako ich riešia iné princípy:

Aspekt YAGNI Ako to riešia iné princípy Ako to YAGNI rieši
Jednoduchosť Iné princípy, ako napríklad KISS (Keep It Simple, Stupid), tiež obhajujú jednoduchosť dizajnu a vyhýbanie sa zbytočnej zložitosti. YAGNI dopĺňa KISS tým, že odporúča nepridávať zbytočné funkcie, čo môže viesť k zvýšenej zložitosti.
Efektívnosť Ďalšie princípy, ako je Agile a Lean Software Development, zdôrazňujú poskytovanie hodnoty zákazníkovi a elimináciu odpadu. YAGNI sa zameriava na dodanie najjednoduchšieho riešenia, ktoré spĺňa súčasné požiadavky, čo môže viesť k rýchlejším vývojovým cyklom a efektívnejšiemu využívaniu zdrojov.
Flexibilita Ďalšie princípy, ako napríklad Agile a Scrum, zdôrazňujú spoluprácu, flexibilitu a prispôsobovanie sa meniacim sa požiadavkám. YAGNI nabáda vývojárov, aby sa najskôr zamerali na poskytovanie najdôležitejších funkcií a prispôsobili sa meniacim sa požiadavkám.
Zníženie rizika Ďalšie princípy, ako napríklad Test-Driven Development (TDD) a Continuous Integration (CI), sa zameriavajú na poskytovanie vysokokvalitného kódu, ktorý spĺňa súčasné požiadavky. YAGNI neodporúča pridávať nepotrebné funkcie, ktoré môžu znížiť riziko zavedenia chýb a iných problémov do kódovej základne.
Zameranie na používateľa Ďalšie princípy, ako je Agile a Lean Software Development, sa zameriavajú na poskytovanie hodnoty zákazníkovi. YAGNI pomáha udržať zameranie na poskytovanie najdôležitejších funkcií ako prvé, čo môže zabezpečiť, že softvér spĺňa potreby a očakávania používateľa.
Úspora nákladov Ďalšie princípy, ako napríklad Agile and Lean Software Development, sa zameriavajú na elimináciu odpadu a poskytovanie hodnoty zákazníkovi. YAGNI môže viesť k úsporám nákladov tým, že sa vyhne zbytočným funkciám a zameria sa na poskytovanie najdôležitejších funkcií ako prvých.
Udržiavateľnosť Ďalšie princípy, ako napríklad SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), sa zameriavajú na dizajn a architektúru kódu. YAGNI pomáha udržiavať kódovú základňu jednoduchú a zameranú, čo uľahčuje jej pochopenie a údržbu.

Celkovo YAGNI dopĺňa ďalšie princípy vývoja softvéru tým, že sa zameriava na dodanie najjednoduchšieho riešenia, ktoré spĺňa súčasné požiadavky a vyhýba sa zbytočným funkcionalitám.

Príklady YAGNI

Tu je niekoľko príkladov, ako možno YAGNI použiť:

  1. Funkcia Creep sa vyhýba : Vývojový tím pracuje na webovej aplikácii. Pôvodne plánujú zahrnúť funkciu, ktorá používateľom umožní vytvárať a zdieľať vlastné avatary. Po zvážení času a zdrojov potrebných na implementáciu tejto funkcie sa však rozhodnú odložiť ju, kým nedostanú spätnú väzbu od používateľov, ktorá naznačuje, že je to potrebné.
  2. Zníženie zložitosti : Vývojár pracuje na mobilnej aplikácii, ktorá používateľom umožňuje sledovať ich cvičebné postupy. Spočiatku plánujú zahrnúť funkciu, ktorá automaticky generuje prispôsobené tréningové plány na základe fitness cieľov používateľa. Po zvážení zložitosti implementácie tejto funkcie a potenciálneho vplyvu na výkon aplikácie sa však rozhodnú zostať pri jednoduchšom prístupe, ktorý používateľom umožňuje vytvárať si vlastné cvičebné plány manuálne.
  3. Rozdelenie zdrojov : Vývojový tím pracuje na platforme elektronického obchodu. Pôvodne plánujú zahrnúť funkciu, ktorá používateľom umožní vytvárať zoznam želaní a zdieľať ich s priateľmi. Po zvážení obmedzeného času a zdrojov dostupných pre projekt sa však rozhodnú zamerať sa na iné funkcie, ktoré sú dôležitejšie pre úspech platformy.
  4. Správa rozsahu : Vývojový tím pracuje na softvérovom projekte pre klienta. Klient na začiatku požaduje niekoľko ďalších funkcií, o ktorých sa domnieva, že budú potrebné pre úspech projektu. Po zvážení rozpočtu a časovej osi projektu sa však vývojový tím rozhodne obmedziť rozsah projektu tak, aby zahŕňal len najkritickejšie funkcie.
  5. Vývoj riadený spätnou väzbou : Vývojový tím pracuje na novom softvérovom produkte. Spočiatku plánujú zahrnúť funkciu, ktorá používateľom umožní poskytnúť spätnú väzbu o výkonnosti produktu. Po zvážení možného vplyvu na použiteľnosť produktu a času potrebného na implementáciu tejto funkcie sa však rozhodnú túto funkciu odložiť, kým nedostanú spätnú väzbu od používateľov, že je to potrebné.

Výhody YAGNI

Výhody YAGNI (You Aren’t Gonna Need It) pri vývoji softvéru sú početné a môžu mať významný vplyv na proces vývoja, kvalitu finálneho produktu a celkový úspech projektu. Tu sú niektoré z kľúčových výhod:

ako vrátiť pole java
  • Rýchlejší rozvoj : Zameraním sa len na to, čo je momentálne potrebné, sa vývojári môžu vyhnúť tomu, aby trávili čas funkciami, ktoré možno nikdy nepoužijú. To môže viesť k rýchlejším vývojovým cyklom a efektívnejšiemu využívaniu zdrojov.
  • Jednoduchosť : Nepotrebné funkcie môžu zvýšiť zložitosť kódovej základne, čo sťažuje údržbu a pochopenie. YAGNI pomáha udržiavať kódovú základňu jednoduchú a zameranú, čo vývojárom uľahčuje prácu.
  • Flexibilita : Vyhnutím sa zbytočným funkciám môžu vývojári udržať kódovú základňu flexibilnú a prispôsobiteľnú zmenám. To môže byť obzvlášť dôležité v rýchlo sa rozvíjajúcich prostrediach, kde sa požiadavky môžu často meniť.
  • Znížené riziko : Nepotrebné funkcie môžu vniesť do kódovej základne chyby a iné problémy. Vyhnutím sa týmto funkciám môžu vývojári znížiť riziko zavedenia chýb a iných problémov do kódovej základne.
  • Zameranie na používateľa : YAGNI pomáha udržať zameranie na poskytovanie hodnoty koncovému používateľovi. Iba implementáciou funkcií, ktoré sú pre používateľa nevyhnutné, môžu vývojári zabezpečiť, aby softvér spĺňal potreby a očakávania používateľa.
  • Úspora nákladov : Vyhýbaním sa zbytočným funkciám môžu vývojári ušetriť čas a zdroje, ktoré by inak vynaložili na implementáciu a údržbu týchto funkcií. To môže viesť k úspore nákladov pre organizáciu.
  • Vylepšená udržiavateľnosť : Jednoduchšia kódová základňa je jednoduchšia na pochopenie a údržbu, vďaka čomu môžu vývojári ľahšie vykonávať zmeny a opravovať chyby.
  • Lepší používateľský zážitok : Tým, že sa vývojári zamerajú na poskytovanie najdôležitejších funkcií ako prvé, môžu zaistiť, že používatelia dostanú funkcie, ktoré potrebujú skôr, čo vedie k lepšiemu celkovému používateľskému zážitku.

Záver

Princíp YAGNI môže byť cenný v rôznych aspektoch vývoja softvéru. Podporuje jednoduchosť, znižuje zbytočnú zložitosť a pomáha tímom sústrediť sa na poskytovanie základných funkcií. Zvažovaním YAGNI môžu vývojári zvýšiť produktivitu, udržiavateľnosť a celkový úspech projektu. Je však dôležité urobiť rovnováhu a neinterpretovať YAGNI nesprávne ako ospravedlnenie pre zanedbávanie predvídavosti alebo architektonických úvah.

Často kladené otázky o YAGNI

Q1. Aké sú kritiky YAGNI?

Niektorí ľudia hovoria, že YAGNI má nevýhodu. Tvrdia, že ak premýšľate len o tom, čo potrebujete práve teraz, a ignorujete potenciálne budúce potreby, možno budete musieť veľa svojej práce prerobiť neskôr, keď sa objavia nové požiadavky.

Q2. Aké sú pravidlá YAGNI?

Nebudeš to potrebovať. YAGNI je princíp vývoja softvéru odvodený od extrémneho programovania (XP), ktorý uvádza, že programátor by nemal pridávať ďalšie funkcie, kým to nie je potrebné.

Q3. Aké sú argumenty v prospech princípu YAGNI?

Zabráni sa tečeniu funkcií, čo znamená, že vývojár nebude používať funkcie, ktoré sa v budúcnosti takmer nevyužijú.

Q4. Aký je rozdiel medzi SOLID a YAGNI?

SOLID očakáva, že budete mať predstavu, aj keď je to len malá, o tom, ako by sa kód mohol v budúcnosti zmeniť, najmä vďaka princípu jednotnej zodpovednosti (SRP). Je to ako dúfať, že dokážete predvídať niektoré veci. Na druhej strane YAGNI predpokladá, že väčšinu času neviete, kam kód v budúcnosti smeruje. Je to ako trochu pochybovať o našej schopnosti predpovedať.