logo

Mikä on YAGNI-periaate (et tarvitse sitä)?

YAGNI tarkoittaa Et tule tarvitsemaan sitä. Ohjelmistokehityksessä on periaate, jonka mukaan kehittäjien tulisi ottaa käyttöön vain nykyisille vaatimuksille välttämättömiä ominaisuuksia eikä lisätä mitään lisätoimintoja, joita mahdollisesti tarvitaan tulevaisuudessa. Tämä periaate perustuu ajatukseen, että tarpeettomien ominaisuuksien lisääminen voi lisätä monimutkaisuutta, pidentää kehitysaikoja ja mahdollisesti lisää virheitä.

YAGNI-periaate liittyy läheisesti SUUDELLA periaate (Keep It Simple, Stupid), joka kannattaa suunnittelun yksinkertaisuutta ja tarpeettoman monimutkaisuuden välttämistä. Molemmat periaatteet kannustavat kehittäjiä keskittymään yksinkertaisimman ratkaisun toimittamiseen, joka täyttää nykyiset vaatimukset sen sijaan, että he yrittäisivät ennakoida ja mukautua mahdollisiin tuleviin tarpeisiin.



Mikä on YAGNI Principal

Sisällysluettelo

Mikä on YAGNI?

YAGNI on periaate, joka kannustaa kehittäjiä välttämään ominaisuuksien tai toimintojen lisäämistä järjestelmään, ennen kuin niitä vaaditaan nimenomaisesti. Se perustuu olettamukseen, että tarpeettomien ominaisuuksien lisääminen voi johtaa lisääntyneeseen monimutkaisuuteen, pidempään kehitysaikoihin ja mahdollisesti enemmän virheitä. Sen sijaan kehittäjien tulisi keskittyä yksinkertaisimman ratkaisun toimittamiseen, joka täyttää nykyiset vaatimukset.



YAGNI on johdettu äärimmäisestä ohjelmoinnista .

Miksi kehittäjän tulisi noudattaa YAGNI-periaatetta?

Kehittäjän tulee noudattaa YAGNI-periaatteita seuraavista syistä:

  • Rakennuskustannukset: Rakennuskustannukset ovat ominaisuuden tai ratkaisun luomiseen käytetty aika, vaiva ja resurssit. Se sisältää kaiken suunnittelusta ja koodauksesta testaukseen. Jos rakennat jotain, joka osoittautuu tarpeettomaksi, rakennuskustannukset edustavat investointia, jonka teit sen luomiseen.
  • Viivästymiskustannukset: Viivästyskustannukset ovat menetetyt tilaisuudet tai taloudellinen vaikutus, jos ominaisuutta tai ratkaisua ei toimiteta nopeasti. Jos käytät aikaa vähemmän kriittisten ominaisuuksien parissa, saatat viivästyttää tärkeämpien ominaisuuksien käyttöönottoa. Tämä viive voi johtaa tulojen tai muiden etujen menettämiseen.
  • Kuljetuskulut: Kuljetuskustannukset ovat jatkuvat vaikeudet ja lisätyöt, jotka aiheutuvat ohjelmiston tietyn ominaisuuden käyttämisestä. Kun ominaisuus lisää monimutkaisuutta, se voi vaikeuttaa ohjelmiston muiden osien käsittelyä, mikä lisää aikaa ja vaivaa. Se on kuin kantaisi ylimääräistä painoa yrittäessään siirtyä eteenpäin.
  • Korjauskustannukset: Korjauskustannukset, jotka tunnetaan myös nimellä tekniset velat, ovat jatkuvat kustannukset, jotka liittyvät virheiden, bugien tai ominaisuuden kehittämisen aikana tehtyjen huonojen valintojen korjaamiseen. Jos rakennat jotain, joka tarvitsee muutoksia myöhemmin, näiden ongelmien ratkaiseminen vie ylimääräistä aikaa ja resursseja, kuten velan maksaminen.

Miksi kehittäjän tulisi seurata YAGNI Principalia?



amisha patel

Miksi YAGNI on tärkeä?

YAGNI on tärkeä, koska se auttaa pitämään ohjelmistokehityksen keskittyneenä ja tehokkaana. Ottamalla käyttöön vain tarpeellisia ominaisuuksia kehittäjät voivat välttää ajan ja resurssien tuhlaamisen tarpeettomiin toimintoihin. Tämä voi johtaa nopeampiin kehitysaikoihin, vähentyneeseen monimutkaisuuteen ja helpommin ylläpidettävään koodikannan käyttöön.

Idea YAGNI:n takana

YAGNI:n käyttäminen kehittäjänä on kuin sinulla olisi käytännöllinen opas, joka pitää työsi keskittyneenä ja tehokkaana.

YAGNI-päällikkö kehittäjille

1. Hanki tarvittavat vaatimukset

Kaikki projektisi tarvitsemat asiat ja lajittele ne välttämättömiksi ja voivat odottaa. Tämä auttaa sinua tietämään tarkalleen, mitä tehdä. Kirjoitatpa sen paperille tai kirjoitat sen näytölle, luettelo pitää sinut järjestyksessä.

miten komentosarja suoritetaan Linuxissa

2. Keskustele tiimisi kanssa

Sen jälkeen on aika keskustella tiimisi kanssa. Jaa suunnitelmasi ja tavoitteesi heidän kanssaan. Tämä varmistaa, että kaikki ovat samalla sivulla ja ymmärtävät, mitä on tehtävä. Se on kuin olisi joukkueen kapteeni ja varmistaisi, että kaikki pelaavat samaa peliä.

3. Analysoi yksinkertainen ratkaisusuunnitelma

Nyt kun on kyse varsinaisen työn suunnittelusta, pidä se yksinkertaisena. Jaa suuret tavoitteesi pienempiin tehtäviin. Tämä auttaa sinua välttämään ylikuormitusta ja varmistaa, että keskityt olennaiseen. Ajattele sitä kuin rakentaisit vaiheittaisen etenemissuunnitelman projektillesi.

4. Kieltäytyä, jos se ei sovi ratkaisuun

Joskus tiimisi saattaa keksiä uusia ideoita tai haluta lisätä asioita. Vaikka nämä ideat voivat olla hienoja, sinun on oltava valmis sanomaan ei, ellei se ole pieni parannus. Ei-sanominen voi olla vaikeaa, mutta se estää sinua eksymästä raiteiltaan ja jättämästä kiinni määräaikoja.

5. Pidä kirjaa edistymisestäsi

Pidä kirjaa tekemisistäsi. Se on kuin maalinteon säilyttämistä pelissä. Tämä auttaa sinua näkemään, kuinka pitkälle olet päässyt ja oletko menossa oikeaan suuntaan. Työkalut, jotka auttavat sinua hallitsemaan tätä prosessia, ovat kuin tulostauluja kehittäjille, jotka auttavat heitä pysymään raiteilla ja toimittamaan sen, mitä asiakkaat todella tarvitsevat.

YAGNI vs muut periaatteet

YAGNI (You Aren't Gonna Need It) on ohjelmistokehityksen periaate, joka suosittelee olemaan lisäämättä toimintoja ennen kuin se on välttämätöntä. Se on ristiriidassa muiden periaatteiden kanssa useilla tavoilla:

  1. KISS (Keep It Simple, Stupid) : KISS on periaate, joka kannattaa suunnittelun yksinkertaisuutta ja tarpeettoman monimutkaisuuden välttämistä. YAGNI täydentää KISSiä neuvomalla olemaan lisäämättä tarpeettomia toimintoja, jotka voivat lisätä monimutkaisuutta.
  2. KUIVA (älä toista itseäsi) : DRY on periaate, joka kannattaa koodin uudelleenkäyttöä ja päällekkäisyyden välttämistä. DRY keskittyy ylimääräisen koodin poistamiseen, kun taas YAGNI keskittyy välttämään tarpeettomia toimintoja.
  3. KIINTEÄ : SOLID on joukko oliopohjaisen suunnittelun periaatteita, jotka edistävät modulaarista, ylläpidettävää ja skaalautuvaa koodia. SOLID-periaatteet keskittyvät koodin suunnitteluun ja arkkitehtuuriin, kun taas YAGNI keskittyy koodin toimivuuteen.
  4. TDD (testilähtöinen kehitys) : TDD on kehitysprosessi, joka sisältää testien kirjoittamisen ennen koodin kirjoittamista. TDD keskittyy testien kirjoittamiseen kehitysprosessin ohjaamiseksi, kun taas YAGNI keskittyy välttämään tarpeettomia toimintoja.
  5. Ketterä : Ketterä on joukko ohjelmistokehityksen periaatteita ja käytäntöjä, jotka painottavat yhteistyötä, joustavuutta ja asiakaspalautetta. YAGNIa voidaan pitää ketteränä periaatteena, sillä se rohkaisee kehittäjiä keskittymään tärkeimpien ominaisuuksien toimittamiseen ensin ja mukautumaan muuttuviin vaatimuksiin.

Tässä on vertailu YAGNI:sta muihin ohjelmistokehitysperiaatteisiin, jotka perustuvat YAGNI:n näkökohtiin ja miten muut periaatteet ratkaisevat ne:

YAGNIn näkökulma Kuinka muut periaatteet ratkaisevat sen Kuinka YAGNI ratkaisee sen
Yksinkertaisuus Myös muut periaatteet, kuten KISS (Keep It Simple, Stupid), puoltavat suunnittelun yksinkertaisuutta ja tarpeettoman monimutkaisuuden välttämistä. YAGNI täydentää KISSiä neuvomalla olemaan lisäämättä tarpeettomia toimintoja, jotka voivat lisätä monimutkaisuutta.
Tehokkuus Muut periaatteet, kuten ketterä ja lean ohjelmistokehitys, painottavat arvon tuottamista asiakkaalle ja jätteiden eliminoimista. YAGNI keskittyy toimittamaan yksinkertaisimman ratkaisun, joka täyttää nykyiset vaatimukset, mikä voi johtaa nopeampiin kehityssykleihin ja tehokkaampaan resurssien käyttöön.
Joustavuus Muut periaatteet, kuten Agile ja Scrum, korostavat yhteistyötä, joustavuutta ja sopeutumista muuttuviin vaatimuksiin. YAGNI kannustaa kehittäjiä keskittymään tärkeimpien ominaisuuksien toimittamiseen ensin ja mukautumaan muuttuviin vaatimuksiin.
Riskien vähentäminen Muut periaatteet, kuten Test-Driven Development (TDD) ja Continuous Integration (CI), keskittyvät laadukkaan koodin toimittamiseen, joka täyttää nykyiset vaatimukset. YAGNI neuvoo olemaan lisäämättä tarpeettomia toimintoja, mikä voi vähentää riskiä lisätä virheitä ja muita ongelmia koodikantaan.
User Focus Muut periaatteet, kuten ketterä ja lean ohjelmistokehitys, keskittyvät arvon tuottamiseen asiakkaalle. YAGNI auttaa keskittymään tärkeimpien ominaisuuksien toimittamiseen ensin, mikä voi varmistaa, että ohjelmisto vastaa käyttäjän tarpeita ja odotuksia.
Kustannussäästöt Muut periaatteet, kuten ketterä ja lean ohjelmistokehitys, keskittyvät jätteiden poistamiseen ja arvon tuottamiseen asiakkaalle. YAGNI voi johtaa kustannussäästöihin välttämällä tarpeettomia ominaisuuksia ja keskittymällä tärkeimpien ominaisuuksien toimittamiseen ensin.
Ylläpidettävyys Muut periaatteet, kuten SOLID (Single Responsibility, Open/Closed, Liskov Substituutio, Interface Segregation, Dependency Inversion), keskittyvät koodin suunnitteluun ja arkkitehtuuriin. YAGNI auttaa pitämään koodikannan yksinkertaisena ja keskittyneenä, mikä helpottaa sen ymmärtämistä ja ylläpitoa.

Kaiken kaikkiaan YAGNI täydentää muita ohjelmistokehityksen periaatteita keskittymällä toimittamaan yksinkertaisimman ratkaisun, joka täyttää nykyiset vaatimukset ja välttämällä tarpeettomia toimintoja.

Esimerkkejä YAGNI:sta

Tässä on esimerkkejä YAGNI-sovelluksen käytöstä:

  1. Ominaisuus Creep vältetty : Kehitystiimi työskentelee verkkosovelluksen parissa. He aikovat aluksi sisällyttää toiminnon, jonka avulla käyttäjät voivat luoda ja jakaa mukautettuja avatareja. Harkittuaan tämän ominaisuuden toteuttamiseen tarvittavaa aikaa ja resursseja, he kuitenkin päättävät lykätä sitä, kunnes he saavat käyttäjiltä palautetta sen tarpeellisuudesta.
  2. Monimutkaisuuden vähentäminen : Kehittäjä työskentelee mobiilisovelluksen parissa, jonka avulla käyttäjät voivat seurata harjoitusrutiinejaan. Aluksi he aikovat sisällyttää ominaisuuden, joka luo automaattisesti räätälöityjä harjoitussuunnitelmia käyttäjän kuntotavoitteiden perusteella. Harkittuaan tämän ominaisuuden käyttöönoton monimutkaisuutta ja mahdollisia vaikutuksia sovelluksen suorituskykyyn, he kuitenkin päättävät pitää kiinni yksinkertaisemmasta lähestymistavasta, jonka avulla käyttäjät voivat luoda omia harjoitussuunnitelmiaan manuaalisesti.
  3. Resurssien kohdentaminen : Kehitystiimi työskentelee sähköisen kaupankäynnin alustalla. He aikovat aluksi sisällyttää toiminnon, jonka avulla käyttäjät voivat luoda toivelistan ja jakaa ne ystävien kanssa. Harkittuaan projektille käytettävissä olevaa rajallista aikaa ja resursseja he kuitenkin päättävät keskittyä muihin ominaisuuksiin, jotka ovat kriittisempiä alustan menestyksen kannalta.
  4. Laajuuden hallinta : Kehitystiimi työskentelee ohjelmistoprojektin parissa asiakkaalle. Asiakas pyytää aluksi useita lisäominaisuuksia, jotka hänen mielestään ovat välttämättömiä projektin onnistumiselle. Harkittuaan projektin budjettia ja aikataulua kehitystiimi kuitenkin päättää rajoittaa projektin laajuuden sisältämään vain kriittisimmät ominaisuudet.
  5. Palautelähtöinen kehitys : Kehitystiimi työskentelee uuden ohjelmistotuotteen parissa. He aikovat aluksi sisällyttää toiminnon, jonka avulla käyttäjät voivat antaa palautetta tuotteen suorituskyvystä. Harkittuaan mahdollisia vaikutuksia tuotteen käytettävyyteen ja tämän ominaisuuden käyttöönottoon tarvittavaa aikaa he kuitenkin päättävät lykätä sitä, kunnes he saavat käyttäjiltä palautetta sen tarpeellisuudesta.

YAGNI:n edut

YAGNI:n (You Aren't Gonna Need It) hyödyt ohjelmistokehityksessä ovat lukuisia ja niillä voi olla merkittävä vaikutus kehitysprosessiin, lopputuotteen laatuun ja projektin yleiseen onnistumiseen. Tässä on joitain tärkeimmistä eduista:

  • Nopeampi kehitys : Keskittymällä vain siihen, mitä tällä hetkellä tarvitaan, kehittäjät voivat välttää käyttämästä aikaa ominaisuuksiin, joita ei ehkä koskaan käytetä. Tämä voi johtaa nopeampiin kehityssykleihin ja tehokkaampaan resurssien käyttöön.
  • Yksinkertaisuus : Tarpeettomat ominaisuudet voivat monimutkaistaa koodikantaa, mikä vaikeuttaa sen ylläpitämistä ja ymmärtämistä. YAGNI auttaa pitämään koodikannan yksinkertaisena ja keskittyneenä, mikä helpottaa kehittäjien käyttöä.
  • Joustavuus : Välttämällä tarpeettomia ominaisuuksia kehittäjät voivat pitää koodikannan joustavana ja mukautuvana muutoksiin. Tämä voi olla erityisen tärkeää nopeatempoisissa ympäristöissä, joissa vaatimukset voivat muuttua usein.
  • Vähentynyt riski : Tarpeettomat ominaisuudet voivat tuoda virheitä ja muita ongelmia koodikantaan. Vältämällä näitä ominaisuuksia kehittäjät voivat vähentää riskiä lisätä virheitä ja muita ongelmia koodikantaan.
  • User Focus : YAGNI auttaa pitämään keskittymisen arvon tuottamiseen loppukäyttäjälle. Ottamalla käyttöön vain käyttäjälle välttämättömiä ominaisuuksia, kehittäjät voivat varmistaa, että ohjelmisto vastaa käyttäjän tarpeita ja odotuksia.
  • Kustannussäästöt : Välttämällä tarpeettomia ominaisuuksia kehittäjät voivat säästää aikaa ja resursseja, jotka muuten kuluisi näiden ominaisuuksien käyttöönottoon ja ylläpitoon. Tämä voi johtaa organisaatiolle kustannussäästöihin.
  • Parempi ylläpidettävyys : Yksinkertaisempi koodikanta on helpompi ymmärtää ja ylläpitää, joten kehittäjien on helpompi tehdä muutoksia ja korjata virheitä.
  • Parempi käyttökokemus : Keskittymällä toimittamaan tärkeimmät ominaisuudet ensin, kehittäjät voivat varmistaa, että käyttäjät saavat tarvitsemansa toiminnot nopeammin, mikä parantaa yleistä käyttökokemusta.

Johtopäätös

palauttaa taulukon java

YAGNI-periaate voi olla arvokas ohjelmistokehityksen eri osa-alueilla. Se edistää yksinkertaisuutta, vähentää tarpeetonta monimutkaisuutta ja auttaa tiimejä keskittymään tärkeiden toimintojen toimittamiseen. Harkitsemalla YAGNIa kehittäjät voivat parantaa tuottavuutta, ylläpidettävyyttä ja projektin yleistä menestystä. On kuitenkin tärkeää löytää tasapaino ja olla tulkitsematta YAGNIa väärin tekosyynä ennakoinnin tai arkkitehtonisten näkökohtien laiminlyönnille.

YAGNI:n usein kysytyt kysymykset

Q1. Mitä kritiikkiä YAGNIa kohtaan on esitetty?

Jotkut sanovat, että YAGNIlla on huono puoli. He väittävät, että jos ajattelet vain sitä, mitä tarvitset juuri nyt ja jätät huomioimatta mahdolliset tulevat tarpeet, saatat joutua tekemään paljon työtäsi uudelleen myöhemmin, kun uusia vaatimuksia ilmaantuu.

Q2. Mitkä ovat YAGNI-säännöt?

Et tule tarvitsemaan sitä. YAGNI on äärimmäisestä ohjelmoinnista (XP) johdettu ohjelmistokehitysperiaate, jonka mukaan ohjelmoijan ei tule lisätä ylimääräisiä toimintoja ennen kuin se on tarpeen.

Q3. Mitkä ovat perustelut YAGNI-periaatteen puolesta?

Ominaisuuden ryömintä vältetään, mikä tarkoittaa, että kehittäjä ei käytä toimintoja, joita tuskin käytetään tulevaisuudessa.

Q4. Mitä eroa on SOLIDilla ja YAGNI:lla?

SOLID odottaa, että sinulla on idea, vaikka se olisi vain pieni, siitä, miten koodi saattaa muuttua tulevaisuudessa, erityisesti SRP (Single Responsibility Principle) -periaatteen kanssa. Tämä on kuin toivoisi, että voit ennustaa joitain asioita. Kääntöpuolella YAGNI olettaa, että suurimman osan ajasta et tiedä, mihin koodi on menossa tulevaisuudessa. Tuntuu kuin epäilimme kykyämme ennustaa.