YAGNI pomeni Ne boste ga potrebovali. To je načelo pri razvoju programske opreme, ki predlaga, da razvijalci izvajajo samo funkcije, ki so potrebne za trenutne zahteve, in ne smejo dodajati dodatnih funkcij, ki bi jih morda potrebovali v prihodnosti. To načelo temelji na ideji, da lahko dodajanje nepotrebnih funkcij vodi do povečane kompleksnosti, daljših razvojnih časov in potencialno več hroščev.
Načelo YAGNI je tesno povezano z POLJUB princip (Keep It Simple, Stupid), ki se zavzema za enostavnost oblikovanja in izogibanje nepotrebni kompleksnosti. Obe načeli spodbujata razvijalce, da se osredotočijo na zagotavljanje najpreprostejše rešitve, ki izpolnjuje trenutne zahteve, namesto da poskušajo predvideti in prilagoditi morebitne prihodnje potrebe.
Kaj je YAGNI Principal
Kazalo
- Kaj je YAGNI?
- Kako se izvaja YAGNI?
- YAGNI proti drugim načelom
- Primeri YAGNI
- Prednosti YAGNI
- Pogosta vprašanja o YAGNI
Kaj je YAGNI?
YAGNI je načelo, ki spodbuja razvijalce, naj se izogibajo dodajanju funkcij ali funkcionalnosti v sistem, dokler niso izrecno zahtevane. Temelji na predpostavki, da lahko dodajanje nepotrebnih funkcij vodi do povečane kompleksnosti, daljših razvojnih časov in potencialno več hroščev. Namesto tega bi se morali razvijalci osredotočiti na zagotavljanje najpreprostejše rešitve, ki izpolnjuje trenutne zahteve.
YAGNI izhaja iz ekstremnega programiranja .
Zakaj bi moral razvijalec slediti načelu YAGNI?
Razvijalec bi moral upoštevati načela YAGNI iz naslednjih razlogov:
- Stroški gradnje: Stroški gradnje so količina časa, truda in virov, porabljenih za ustvarjanje funkcije ali rešitve. Vključuje vse od načrtovanja in kodiranja do testiranja. Če zgradite nekaj, za kar se izkaže, da ni potrebno, stroški gradnje predstavljajo naložbo, ki ste jo vložili v to ustvarjanje.
- Stroški zamude: Cena zamude je zamujena priložnost ali ekonomski učinek, če funkcije ali rešitve ne zagotovite takoj. Če porabite čas za manj kritične funkcije, lahko odložite implementacijo pomembnejših. Ta zamuda lahko povzroči zamujene priložnosti za prihodek ali druge koristi.
- Stroški prevoza: Stroški prenosa so nenehne težave in dodatno delo, ki ga povzroča določena funkcija v vaši programski opremi. Ko funkcija doda zapletenost, lahko oteži delo na drugih delih programske opreme, kar povzroči dodaten čas in trud. To je kot prenašanje dodatne teže, medtem ko se poskušate premakniti naprej.
- Stroški popravila: Stroški popravila, znani tudi kot tehnični dolg, so stalni stroški, povezani z odpravljanjem napak, hroščev ali slabih odločitev med razvojem funkcije. Če zgradite nekaj, kar potrebuje prilagoditve pozneje, obravnavanje teh težav zahteva dodaten čas in vire, podobno kot odplačilo dolga.
Zakaj bi moral razvijalec slediti načelu YAGNI
js onload
Zakaj je YAGNI pomemben?
YAGNI je pomemben, ker pomaga ohranjati osredotočenost in učinkovitost razvoja programske opreme. Z implementacijo le nujnih funkcij se lahko razvijalci izognejo zapravljanju časa in sredstev za nepotrebne funkcije. To lahko vodi do hitrejših razvojnih časov, zmanjšane zapletenosti in bolj vzdržljive kodne baze.
Ideja za YAGNI
Če želite YAGNI uporabljati kot razvijalca, je to kot imeti praktičen vodnik, s katerim boste svoje delo ohranili osredotočeno in učinkovito.
Vodja YAGNI za razvijalce
1. Pridobite potrebne zahteve
Vse stvari, ki jih potrebuje vaš projekt, jih razvrstite med obvezne in lahko počakajo. To vam pomaga natančno vedeti, na čem morate delati. Ne glede na to, ali ga zapišete na papir ali vtipkate na zaslon, imate seznam organiziran.
faktorska java
2. Pogovorite se s svojo ekipo
Po tem je čas za pogovor s svojo ekipo. Delite svoje načrte in cilje z njimi. To zagotavlja, da so vsi na isti strani in razumejo, kaj je treba narediti. To je kot biti kapetan ekipe in skrbeti, da vsi igrajo isto igro.
3. Analizirajte preprost načrt za rešitev
Zdaj, ko gre za načrtovanje dejanskega dela, naj bo preprosto. Razčlenite svoje velike cilje na manjše naloge. To vam pomaga preprečiti, da bi bili preobremenjeni, in zagotavlja, da se osredotočate na tisto, kar je res pomembno. Zamislite si to kot gradnjo načrta po korakih za svoj projekt.
4. Zavrnite, če ne ustreza rešitvi
Včasih lahko vaša ekipa pride z novimi idejami ali želi dodati dodatne stvari. Čeprav so te ideje morda kul, morate biti pripravljeni reči ne, razen če gre za majhno izboljšavo. Reči ne je lahko težko, vendar vam preprečuje, da bi zašli s poti in zamudili roke.
5. Zabeležite svoj napredek
Zabeležite, kaj ste storili. To je kot vodenje rezultata v igri. To vam pomaga videti, kako daleč ste prišli in ali greste v pravo smer. Orodja, ki vam pomagajo upravljati ta proces, so kot preglednice za razvijalce, ki jim pomagajo ostati na pravi poti in zagotoviti tisto, kar stranke resnično potrebujejo.
YAGNI proti drugim načelom
YAGNI (You Aren’t Gonna Need It) je načelo razvoja programske opreme, ki odsvetuje dodajanje funkcij, dokler ni potrebno. Na več načinov je v nasprotju z drugimi načeli:
- KISS (Keep It Simple, Stupid) : KISS je načelo, ki se zavzema za enostavnost oblikovanja in izogibanje nepotrebni kompleksnosti. YAGNI dopolnjuje KISS tako, da odsvetuje dodajanje nepotrebne funkcionalnosti, ki lahko privede do povečane kompleksnosti.
- SUHO (ne ponavljaj se) : DRY je načelo, ki zagovarja ponovno uporabo kode in izogibanje podvajanju. Medtem ko se DRY osredotoča na odpravo odvečne kode, se YAGNI osredotoča na izogibanje nepotrebnim funkcijam.
- TRDNO : SOLID je nabor načel za objektno usmerjeno načrtovanje, ki spodbuja modularno, vzdržljivo in razširljivo kodo. Medtem ko se načela SOLID osredotočajo na oblikovanje in arhitekturo kode, se YAGNI osredotoča na funkcionalnost kode.
- TDD (testno usmerjen razvoj) : TDD je razvojni proces, ki vključuje pisanje testov pred pisanjem kode. TDD se osredotoča na pisanje testov za poganjanje razvojnega procesa, medtem ko se YAGNI osredotoča na izogibanje nepotrebni funkcionalnosti.
- Agile : Agile je nabor načel in praks za razvoj programske opreme, ki poudarjajo sodelovanje, prilagodljivost in povratne informacije strank. Na YAGNI lahko gledamo kot na načelo Agile, saj razvijalce spodbuja, da se najprej osredotočijo na zagotavljanje najpomembnejših funkcij in se prilagodijo spreminjajočim se zahtevam.
Tukaj je primerjava YAGNI z drugimi načeli razvoja programske opreme, ki temeljijo na vidikih YAGNI in kako jih druga načela rešujejo:
| Vidik YAGNI | Kako to rešujejo druga načela | Kako YAGNI to rešuje |
|---|---|---|
| Preprostost | Druga načela, kot je KISS (Keep It Simple, Stupid), prav tako zagovarjajo enostavnost oblikovanja in izogibanje nepotrebni zapletenosti. | YAGNI dopolnjuje KISS tako, da odsvetuje dodajanje nepotrebne funkcionalnosti, ki lahko privede do povečane kompleksnosti. |
| Učinkovitost | Druga načela, kot sta agilni in vitki razvoj programske opreme, poudarjajo zagotavljanje vrednosti stranki in odpravo odpadkov. | YAGNI se osredotoča na zagotavljanje najpreprostejše rešitve, ki izpolnjuje trenutne zahteve, kar lahko vodi do hitrejših razvojnih ciklov in učinkovitejše uporabe virov. |
| Prilagodljivost | Druga načela, kot sta Agile in Scrum, poudarjajo sodelovanje, prilagodljivost in prilagajanje spreminjajočim se zahtevam. | YAGNI spodbuja razvijalce, da se najprej osredotočijo na zagotavljanje najpomembnejših funkcij in se prilagodijo spreminjajočim se zahtevam. |
| Zmanjšanje tveganja | Druga načela, kot sta razvoj na podlagi testiranja (TDD) in stalna integracija (CI), se osredotočajo na zagotavljanje visokokakovostne kode, ki izpolnjuje trenutne zahteve. | YAGNI odsvetuje dodajanje nepotrebnih funkcij, ki lahko zmanjšajo tveganje vnosa hroščev in drugih težav v kodno zbirko. |
| Osredotočenost na uporabnika | Druga načela, kot sta Agile in Lean Software Development, se osredotočajo na zagotavljanje vrednosti stranki. | YAGNI pomaga ohranjati osredotočenost na zagotavljanje najpomembnejših funkcij, ki lahko zagotovijo, da programska oprema izpolnjuje potrebe in pričakovanja uporabnika. |
| Prihranki stroškov | Druga načela, kot sta agilni in vitki razvoj programske opreme, se osredotočajo na odpravo odpadkov in zagotavljanje vrednosti stranki. | YAGNI lahko vodi do prihranka pri stroških, tako da se izogne nepotrebnim funkcijam in se najprej osredotoči na zagotavljanje najpomembnejših funkcij. |
| Vzdrževanje | Druga načela, kot je SOLID (enotna odgovornost, odprto/zaprto, zamenjava Liskova, ločevanje vmesnikov, inverzija odvisnosti), se osredotočajo na zasnovo in arhitekturo kode. | YAGNI pomaga ohranjati kodno zbirko preprosto in osredotočeno, kar olajša razumevanje in vzdrževanje. |
Na splošno YAGNI dopolnjuje druga načela razvoja programske opreme z osredotočanjem na zagotavljanje najpreprostejše rešitve, ki izpolnjuje trenutne zahteve in se izogiba nepotrebni funkcionalnosti.
Primeri YAGNI
Tukaj je nekaj primerov uporabe YAGNI:
- Funkcija Creep se je izognila : Razvojna ekipa dela na spletni aplikaciji. Sprva nameravajo vključiti funkcijo, ki uporabnikom omogoča ustvarjanje in skupno rabo avatarjev po meri. Vendar pa se po preučitvi časa in virov, potrebnih za implementacijo te funkcije, odločijo, da jo odložijo, dokler ne prejmejo povratnih informacij od uporabnikov, ki kažejo, da je potrebna.
- Zmanjšanje kompleksnosti : razvijalec dela na mobilni aplikaciji, ki uporabnikom omogoča spremljanje njihovih vadbenih rutin. Sprva nameravajo vključiti funkcijo, ki samodejno ustvarja prilagojene načrte vadbe na podlagi uporabnikovih fitnes ciljev. Vendar pa so se po premisleku o zapletenosti izvajanja te funkcije in morebitnem vplivu na delovanje aplikacije odločili, da bodo ostali pri preprostejšem pristopu, ki uporabnikom omogoča ročno ustvarjanje lastnih načrtov vadbe.
- Dodeljevanje virov : Razvojna ekipa dela na platformi za e-trgovino. Sprva nameravajo vključiti funkcijo, ki uporabnikom omogoča, da ustvarijo seznam želja in jih delijo s prijatelji. Vendar pa se po premisleku o omejenem času in virih, ki so na voljo za projekt, odločijo, da se osredotočijo na druge funkcije, ki so pomembnejše za uspeh platforme.
- Upravljanje obsega : Razvojna ekipa dela na projektu programske opreme za naročnika. Stranka na začetku zahteva več dodatnih funkcij, za katere meni, da bodo potrebne za uspeh projekta. Vendar pa se po preučitvi proračuna in časovnice projekta razvojna ekipa odloči omejiti obseg projekta na samo najbolj kritične funkcije.
- Razvoj na podlagi povratnih informacij : Razvojna skupina dela na novem programskem izdelku. Sprva nameravajo vključiti funkcijo, ki uporabnikom omogoča povratne informacije o delovanju izdelka. Vendar pa se po preučitvi morebitnega vpliva na uporabnost izdelka in časa, potrebnega za implementacijo te funkcije, odločijo, da jo odložijo, dokler ne prejmejo povratnih informacij uporabnikov, ki kažejo, da je potrebna.
Prednosti YAGNI
Prednosti YAGNI (You Aren’t Gonna Need It) pri razvoju programske opreme so številne in lahko pomembno vplivajo na razvojni proces, kakovost končnega izdelka in splošni uspeh projekta. Tukaj je nekaj ključnih prednosti:
- Hitrejši razvoj : Če se razvijalci osredotočajo le na tisto, kar je trenutno potrebno, se lahko izognejo porabi časa za funkcije, ki morda nikoli ne bodo uporabljene. To lahko vodi do hitrejših razvojnih ciklov in učinkovitejše uporabe virov.
- Preprostost : Nepotrebne funkcije lahko zapletejo kodno zbirko, zaradi česar je težje vzdrževati in razumeti. YAGNI pomaga ohranjati kodno zbirko preprosto in osredotočeno, kar razvijalcem olajša delo.
- Prilagodljivost : Z izogibanjem nepotrebnim funkcijam lahko razvijalci ohranijo zbirko kode prožno in prilagodljivo spremembam. To je lahko še posebej pomembno v hitrih okoljih, kjer se lahko zahteve pogosto spreminjajo.
- Zmanjšano tveganje : Nepotrebne funkcije lahko v kodno zbirko vnesejo hrošče in druge težave. Z izogibanjem tem funkcijam lahko razvijalci zmanjšajo tveganje vnosa hroščev in drugih težav v kodno zbirko.
- Osredotočenost na uporabnika : YAGNI pomaga ohranjati osredotočenost na zagotavljanje vrednosti končnemu uporabniku. Z implementacijo samo funkcij, ki so potrebne za uporabnika, lahko razvijalci zagotovijo, da programska oprema ustreza potrebam in pričakovanjem uporabnika.
- Prihranki stroškov : Z izogibanjem nepotrebnim funkcijam lahko razvijalci prihranijo čas in sredstva, ki bi jih sicer porabili za izvajanje in vzdrževanje teh funkcij. To lahko povzroči prihranke pri stroških organizacije.
- Izboljšana vzdržljivost : Preprostejšo kodno zbirko je lažje razumeti in vzdrževati, kar razvijalcem olajša spreminjanje in odpravljanje napak.
- Boljša uporabniška izkušnja : Če se najprej osredotočijo na zagotavljanje najpomembnejših funkcij, lahko razvijalci zagotovijo, da uporabniki prej dobijo funkcionalnost, ki jo potrebujejo, kar vodi k boljši splošni uporabniški izkušnji.
Zaključek
Načelo YAGNI je lahko dragoceno v različnih vidikih razvoja programske opreme. Spodbuja preprostost, zmanjšuje nepotrebno zapletenost in pomaga ekipam, da se osredotočijo na zagotavljanje osnovnih funkcij. Z upoštevanjem YAGNI lahko razvijalci izboljšajo produktivnost, vzdržljivost in splošni uspeh projekta. Vendar je pomembno vzpostaviti ravnotežje in ne napačno razlagati YAGNI kot izgovor za zanemarjanje predvidevanja ali arhitekturnih vidikov.
Pogosta vprašanja o YAGNI
Q1. Kakšne so kritike YAGNI?
Nekateri pravijo, da ima YAGNI slabo stran. Trdijo, da če boste razmišljali le o tem, kaj trenutno potrebujete, in boste zanemarili morebitne prihodnje potrebe, boste morda morali pozneje, ko se bodo pojavile nove zahteve, ponoviti veliko svojega dela.
Q2. Kakšna so pravila YAGNI?
Ne boste ga potrebovali. YAGNI je načelo razvoja programske opreme, ki izhaja iz ekstremnega programiranja (XP), ki navaja, da programer ne sme dodati dodatnih funkcij, dokler ni potrebno.
psi polic
Q3. Kakšni so argumenti v prid načelu YAGNI?
Izognemo se lezenju funkcij, kar pomeni, da razvijalec ne bo uporabljal funkcionalnosti, ki se v prihodnosti skoraj ne bo uporabljala.
Q4. Kakšna je razlika med SOLID in YAGNI?
SOLID pričakuje, da boste imeli idejo, četudi le malo, o tem, kako bi se koda lahko spremenila v prihodnosti, zlasti z načelom ene odgovornosti (SRP). To je kot upanje, da lahko nekatere stvari predvidiš. Na drugi strani YAGNI predvideva, da večino časa ne veste, kam bo koda v prihodnosti. Kot da bi nekoliko dvomili o naši sposobnosti napovedovanja.