logo

Kas yra YAGNI principas (Jums to nereikės)?

YAGNI reiškia Jums to nereikės. Tai yra programinės įrangos kūrimo principas, pagal kurį kūrėjai turėtų įdiegti tik tas funkcijas, kurios yra būtinos dabartiniams reikalavimams, o ne pridėti jokių papildomų funkcijų, kurių gali prireikti ateityje. Šis principas pagrįstas idėja, kad pridėjus nereikalingų funkcijų gali padidėti sudėtingumas, pailgėti kūrimo laikas ir galbūt daugiau klaidų.

YAGNI principas yra glaudžiai susijęs su BUČIUOTI principas (Keep It Simple, Stupid), kuris pasisako už dizaino paprastumą ir vengti nereikalingo sudėtingumo. Abu principai skatina kūrėjus sutelkti dėmesį į paprasčiausio sprendimo, atitinkančio dabartinius reikalavimus, pateikimą, o ne stengtis numatyti ir pritaikyti galimus ateities poreikius.



Kas yra YAGNI vadovas

Turinys

Kas yra YAGNI?

YAGNI yra principas, skatinantis kūrėjus vengti pridėti prie sistemos funkcijų ar funkcijų, kol jų aiškiai nereikia. Jis pagrįstas prielaida, kad pridėjus nereikalingų funkcijų gali padidėti sudėtingumas, pailgėti kūrimo laikas ir galbūt daugiau klaidų. Vietoj to kūrėjai turėtų sutelkti dėmesį į paprasčiausio sprendimo, atitinkančio dabartinius reikalavimus, pristatymą.



YAGNI yra kilęs iš ekstremalaus programavimo .

Kodėl kūrėjas turėtų vadovautis YAGNI principu?

Kūrėjas turėtų vadovautis YAGNI principais dėl šių priežasčių:

  • Statybos kaina: Sukūrimo kaina – tai laikas, pastangos ir ištekliai, išleisti kuriant funkciją ar sprendimą. Tai apima viską nuo planavimo ir kodavimo iki testavimo. Jei statote ką nors, kas pasirodo nereikalinga, pastatymo kaina atspindi investicijas, kurias skyrėte jį kurdami.
  • Vėlavimo kaina: Vėlavimo kaina yra praleista galimybė arba ekonominis poveikis, kai funkcija ar sprendimas nepateikiamas greitai. Jei skirsite laiko mažiau svarbioms funkcijoms, galite atidėti svarbesnių funkcijų įgyvendinimą. Dėl šio delsimo gali būti praleistos galimybės gauti pajamų ar kitų privalumų.
  • Vežimo kaina: Nešiojimo kaina yra nuolatiniai sunkumai ir papildomas darbas, atsirandantis dėl konkrečios programinės įrangos funkcijos. Kai funkcija padidina sudėtingumą, gali būti sunkiau dirbti su kitomis programinės įrangos dalimis, todėl prireiks papildomo laiko ir pastangų. Tai tarsi papildomo svorio nešiojimas bandant judėti į priekį.
  • Remonto kaina: Remonto kaina, dar vadinama technine skola, yra nuolatinės išlaidos, susijusios su klaidų, klaidų ar netinkamo pasirinkimo, padaryto kuriant funkciją, taisymu. Jei vėliau kuriate kažką, ką reikia koreguoti, sprendžiant šias problemas reikia papildomo laiko ir išteklių, panašiai kaip ir skolos grąžinimas.

Kodėl kūrėjas turėtų sekti YAGNI Principal



np std

Kodėl YAGNI yra svarbus?

YAGNI yra svarbus, nes padeda išlaikyti kryptingą ir efektyvų programinės įrangos kūrimą. Įdiegę tik būtinas funkcijas, kūrėjai gali neeikvoti laiko ir išteklių nereikalingoms funkcijoms. Tai gali lemti greitesnį kūrimo laiką, sumažinti sudėtingumą ir lengviau prižiūrimą kodų bazę.

YAGNI idėja

Jei norite naudoti YAGNI kaip kūrėją, tai tarsi turėti praktinį vadovą, kad jūsų darbas būtų sutelktas ir efektyvus.

YAGNI pagrindinis kūrėjams

1. Gaukite būtinus reikalavimus

Visi dalykai, kurių reikia jūsų projektui, surūšiuoti juos į būtinus dalykus ir gali palaukti. Tai padeda tiksliai žinoti, ką daryti. Nesvarbu, ar užsirašote jį ant popieriaus, ar spausdinate ekrane, turėdami sąrašą galėsite lengviau susitvarkyti.

2. Aptarkite su savo komanda

Po to laikas pasikalbėti su savo komanda. Pasidalinkite su jais savo planais ir tikslais. Taip užtikrinama, kad visi būtų tame pačiame puslapyje ir suprastų, ką reikia padaryti. Tai tarsi būti komandos kapitonu ir įsitikinti, kad visi žaidžia tą patį žaidimą.

3. Išanalizuokite paprastą sprendimo planą

Dabar, kai reikia planuoti faktinį darbą, būkite paprasta. Padalinkite savo didelius tikslus į smulkesnes užduotis. Tai padeda išvengti pervargimo ir užtikrina, kad sutelksite dėmesį į tai, kas iš tikrųjų svarbu. Pagalvokite apie tai kaip apie nuoseklaus projekto plano sudarymą.

4. Atsisakykite, jei sprendimas netinka

Kartais jūsų komanda gali pasiūlyti naujų idėjų arba norėti pridėti papildomų dalykų. Nors šios idėjos gali būti šaunios, turite būti pasirengę pasakyti „ne“, nebent tai būtų nedidelis patobulinimas. Pasakyti „ne“ gali būti sunku, tačiau tai neleidžia nukrypti nuo kelio ir praleisti terminus.

pilna priedų tiesos lentelė

5. Užrašykite savo pažangą

Užsirašykite, ką padarėte. Tai tarsi išlaikyti rezultatą žaidime. Tai padeda pamatyti, kiek toli nuėjote ir ar einate teisinga kryptimi. Įrankiai, padedantys valdyti šį procesą, yra tarsi rezultatų suvestinės kūrėjams, padedančios jiems neatsilikti ir pateikti tai, ko iš tikrųjų reikia klientams.

YAGNI prieš kitus principus

YAGNI (You Aren't Gonna Need It) yra programinės įrangos kūrimo principas, kuris pataria nepridėti funkcijų, kol to nereikia. Jis prieštarauja kitiems principams keliais atžvilgiais:

  1. BUČINIS (Keep it simple, stupid) : KISS yra principas, propaguojantis dizaino paprastumą ir bereikalingo sudėtingumo išvengimą. YAGNI papildo KISS, patardama nepridėti nereikalingų funkcijų, kurios gali padidinti sudėtingumą.
  2. DRY (nekartokite savęs) : DRY yra principas, pasisakantis už kodo pakartotinį naudojimą ir vengimą dubliuotis. DRY daugiausia dėmesio skiria perteklinio kodo pašalinimui, o YAGNI siekia išvengti nereikalingų funkcijų.
  3. KIETAS : SOLID yra objektinio dizaino principų rinkinys, skatinantis modulinį, prižiūrimą ir keičiamo dydžio kodą. SOLID principai orientuoti į kodo dizainą ir architektūrą, o YAGNI daugiausia dėmesio skiria kodo funkcionalumui.
  4. TDD (bandoma plėtra) : TDD yra kūrimo procesas, apimantis testų rašymą prieš rašant kodą. TDD daugiausia dėmesio skiria testų rašymui, kad paskatintų kūrimo procesą, o YAGNI siekia išvengti nereikalingų funkcijų.
  5. Judrus : Agile yra programinės įrangos kūrimo principų ir praktikos rinkinys, kuriame pabrėžiamas bendradarbiavimas, lankstumas ir klientų atsiliepimai. YAGNI galima vertinti kaip Agile principą, nes jis skatina kūrėjus pirmiausia sutelkti dėmesį į svarbiausių funkcijų pristatymą ir prisitaikyti prie kintančių reikalavimų.

Čia yra YAGNI palyginimas su kitais programinės įrangos kūrimo principais, pagrįstais YAGNI aspektais ir kaip juos išsprendžia kiti principai:

YAGNI aspektas Kaip ją išsprendžia kiti principai Kaip YAGNI tai išsprendžia
Paprastumas Kiti principai, tokie kaip KISS (Keep It Simple, Stupid), taip pat pasisako už dizaino paprastumą ir išvengiant nereikalingo sudėtingumo. YAGNI papildo KISS, patardama nepridėti nereikalingų funkcijų, kurios gali padidinti sudėtingumą.
Efektyvumas Kiti principai, tokie kaip „Agile“ ir „Lean Software Development“, pabrėžia vertės teikimą klientui ir atliekų pašalinimą. YAGNI orientuojasi į paprasčiausio sprendimo, atitinkančio dabartinius reikalavimus, pristatymą, o tai gali lemti greitesnius kūrimo ciklus ir efektyvesnį išteklių naudojimą.
Lankstumas Kiti principai, tokie kaip „Agile“ ir „Scrum“, akcentuoja bendradarbiavimą, lankstumą ir prisitaikymą prie besikeičiančių reikalavimų. YAGNI skatina kūrėjus pirmiausia sutelkti dėmesį į svarbiausių funkcijų pristatymą ir prisitaikyti prie kintančių reikalavimų.
Rizikos mažinimas Kiti principai, pvz., bandymu pagrįsta plėtra (TDD) ir nuolatinė integracija (CI), yra skirti teikti aukštos kokybės kodą, atitinkantį dabartinius reikalavimus. YAGNI pataria nepridėti nereikalingų funkcijų, kurios gali sumažinti klaidų ir kitų problemų įvedimo į kodų bazę riziką.
Vartotojo dėmesys Kiti principai, tokie kaip „Agile“ ir „Lean Software Development“, yra skirti vertės teikimui klientui. YAGNI padeda sutelkti dėmesį į svarbiausių funkcijų pateikimą pirmiausia, o tai gali užtikrinti, kad programinė įranga atitiks vartotojo poreikius ir lūkesčius.
Išlaidų taupymas Kiti principai, tokie kaip judrus ir taupus programinės įrangos kūrimas, orientuoti į atliekų pašalinimą ir vertės teikimą klientui. YAGNI gali padėti sutaupyti, nes vengia nereikalingų funkcijų ir pirmiausia sutelkia dėmesį į svarbiausių funkcijų pateikimą.
Priežiūra Kiti principai, tokie kaip SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), orientuojasi į kodo dizainą ir architektūrą. YAGNI padeda išlaikyti kodų bazę paprastą ir koncentruotą, todėl ją lengviau suprasti ir prižiūrėti.

Apskritai, YAGNI papildo kitus programinės įrangos kūrimo principus, sutelkdama dėmesį į paprasčiausio sprendimo, atitinkančio dabartinius reikalavimus, pristatymą ir išvengiant nereikalingų funkcijų.

YAGNI pavyzdžiai

Štai keletas pavyzdžių, kaip galima pritaikyti YAGNI:

  1. Išvengta funkcijos Creep : Kūrimo komanda dirba su žiniatinklio programa. Iš pradžių jie planuoja įtraukti funkciją, leidžiančią vartotojams kurti ir bendrinti pasirinktinius avatarus. Tačiau, įvertinę laiką ir išteklius, reikalingus šiai funkcijai įdiegti, jie nusprendžia ją atidėti, kol gaus atsiliepimų iš vartotojų, nurodančių, kad tai būtina.
  2. Sudėtingumo mažinimas : Kūrėjas dirba su mobiliąja programėle, leidžiančia naudotojams stebėti savo mankštos rutiną. Iš pradžių jie planuoja įtraukti funkciją, kuri automatiškai generuoja asmeninius treniruočių planus pagal vartotojo kūno rengybos tikslus. Tačiau, įvertinę šios funkcijos diegimo sudėtingumą ir galimą poveikį programos veikimui, jie nusprendžia laikytis paprastesnio požiūrio, leidžiančio vartotojams kurti savo treniruočių planus rankiniu būdu.
  3. Išteklių paskirstymas : Kūrėjų komanda dirba prie elektroninės prekybos platformos. Iš pradžių jie planuoja įtraukti funkciją, leidžiančią vartotojams sudaryti pageidavimų sąrašą ir dalytis jais su draugais. Tačiau įvertinę ribotą laiką ir projektui turimus išteklius, jie nusprendžia sutelkti dėmesį į kitas funkcijas, kurios yra svarbesnės platformos sėkmei.
  4. Apimties valdymas : Kūrimo komanda dirba prie kliento programinės įrangos projekto. Iš pradžių klientas prašo kelių papildomų funkcijų, kurios, jų nuomone, bus reikalingos projekto sėkmei. Tačiau, apsvarsčiusi projekto biudžetą ir terminą, kūrimo komanda nusprendžia apriboti projekto apimtį ir įtraukti tik svarbiausias funkcijas.
  5. Atsiliepimu pagrįsta plėtra : Kūrimo komanda dirba prie naujo programinės įrangos produkto. Iš pradžių jie planuoja įtraukti funkciją, leidžiančią vartotojams pateikti atsiliepimų apie produkto veikimą. Tačiau, įvertinę galimą poveikį gaminio tinkamumui naudoti ir laiką, reikalingą šiai funkcijai įdiegti, jie nusprendžia tai atidėti, kol gaus vartotojų atsiliepimus, nurodančius, kad tai būtina.

YAGNI privalumai

YAGNI (Jums to nereikia) pranašumai kuriant programinę įrangą yra daug ir gali turėti didelės įtakos kūrimo procesui, galutinio produkto kokybei ir bendrai projekto sėkmei. Štai keletas pagrindinių privalumų:

  • Greitesnis vystymasis : sutelkdami dėmesį tik į tai, ko reikia šiuo metu, kūrėjai gali neleisti laiko funkcijoms, kurios gali būti niekada nenaudojamos. Tai gali lemti greitesnius plėtros ciklus ir efektyvesnį išteklių naudojimą.
  • Paprastumas : Nereikalingos funkcijos gali padaryti kodų bazę sudėtingesnę, todėl ją sunkiau prižiūrėti ir suprasti. YAGNI padeda išlaikyti kodų bazę paprastą ir koncentruotą, todėl kūrėjams lengviau dirbti.
  • Lankstumas : Vengdami nereikalingų funkcijų, kūrėjai gali išlaikyti kodų bazę lanksčią ir prisitaikančią prie pokyčių. Tai gali būti ypač svarbu greito tempo aplinkoje, kur reikalavimai gali dažnai keistis.
  • Sumažėjusi rizika : Dėl nereikalingų funkcijų kodų bazėje gali atsirasti klaidų ir kitų problemų. Vengdami šių funkcijų, kūrėjai gali sumažinti klaidų ir kitų problemų įvedimo į kodų bazę riziką.
  • Vartotojo dėmesys : YAGNI padeda sutelkti dėmesį į vertės teikimą galutiniam vartotojui. Diegdami tik tas funkcijas, kurios yra būtinos vartotojui, kūrėjai gali užtikrinti, kad programinė įranga atitiks vartotojo poreikius ir lūkesčius.
  • Išlaidų taupymas : Vengdami nereikalingų funkcijų, kūrėjai gali sutaupyti laiko ir išteklių, kurie kitu atveju būtų išleisti toms funkcijoms diegti ir prižiūrėti. Tai gali padėti sutaupyti organizacijos išlaidas.
  • Pagerintas techninis aptarnavimas : paprastesnę kodų bazę lengviau suprasti ir prižiūrėti, todėl kūrėjams lengviau atlikti pakeitimus ir taisyti klaidas.
  • Geresnė vartotojo patirtis : pirmiausia sutelkdami dėmesį į svarbiausių funkcijų teikimą, kūrėjai gali užtikrinti, kad naudotojai greičiau gautų reikiamas funkcijas, o tai pagerins bendrą naudotojo patirtį.

Išvada

YAGNI principas gali būti vertingas įvairiais programinės įrangos kūrimo aspektais. Tai skatina paprastumą, sumažina nereikalingą sudėtingumą ir padeda komandoms sutelkti dėmesį į esminių funkcijų teikimą. Atsižvelgdami į YAGNI, kūrėjai gali padidinti produktyvumą, techninę priežiūrą ir bendrą projekto sėkmę. Tačiau svarbu išlaikyti pusiausvyrą ir neteisingai interpretuoti YAGNI kaip dingstį nepaisyti numatymo ar architektūrinių sumetimų.

paryškinkite tekstą css

YAGNI DUK

Q1. Kokia YAGNI kritika?

Kai kurie žmonės sako, kad YAGNI turi neigiamą pusę. Jie teigia, kad jei galvojate tik apie tai, ko jums reikia dabar, ir nekreipsite dėmesio į galimus ateities poreikius, vėliau, kai atsiras nauji reikalavimai, gali tekti perdaryti daug savo darbo.

Q2. Kokios yra YAGNI taisyklės?

Jums to nereikės. YAGNI yra programinės įrangos kūrimo principas, kilęs iš ekstremalaus programavimo (XP), kuris teigia, kad programuotojas neturėtų pridėti papildomų funkcijų, kol to nereikia.

Q3. Kokie argumentai palaiko YAGNI principą?

Išvengiama funkcijų slinkimo, o tai reiškia, kad kūrėjas nenaudos funkcijų, kurios vargu ar bus naudojamos ateityje.

4 klausimas. Kuo skiriasi SOLID ir YAGNI?

SOLID tikisi, kad turėsite idėją, net jei tai tik šiek tiek, apie tai, kaip kodas gali pasikeisti ateityje, ypač taikant bendros atsakomybės principą (SRP). Tai tarsi viltis, kad galite numatyti kai kuriuos dalykus. Kita vertus, YAGNI daro prielaidą, kad dažniausiai jūs nežinote, kur kodas bus nukreiptas ateityje. Atrodo, tarsi abejotume savo gebėjimu nuspėti.