logo

Hva er YAGNI-prinsippet (You are not Gonna Need It)?

YAGNI står for Du kommer ikke til å trenge det. Det er et prinsipp i programvareutvikling som foreslår at utviklere bare bør implementere funksjoner som er nødvendige for gjeldende krav og ikke legge til noen tilleggsfunksjonalitet som kan være nødvendig i fremtiden. Dette prinsippet er basert på ideen om at å legge til unødvendige funksjoner kan føre til økt kompleksitet, lengre utviklingstider og potensielt flere feil.

YAGNI-prinsippet er nært knyttet til KYSSE prinsippet (Keep It Simple, Stupid), som tar til orde for enkelhet i design og unngå unødvendig kompleksitet. Begge prinsippene oppfordrer utviklere til å fokusere på å levere den enkleste løsningen som oppfyller gjeldende krav, i stedet for å prøve å forutse og imøtekomme potensielle fremtidige behov.



Hva er YAGNI Principal

Innholdsfortegnelse

Hva er YAGNI?

YAGNI er et prinsipp som oppfordrer utviklere til å unngå å legge til funksjoner eller funksjonalitet til et system før de er eksplisitt påkrevd. Det er basert på forutsetningen at å legge til unødvendige funksjoner kan føre til økt kompleksitet, lengre utviklingstider og potensielt flere feil. I stedet bør utviklere fokusere på å levere den enkleste løsningen som oppfyller gjeldende krav.



YAGNI er avledet fra ekstrem programmering .

Hvorfor bør en utvikler følge YAGNI-prinsippet?

Utvikleren bør følge YAGNI-prinsippene av følgende grunner:

  • Byggekostnad: Byggekostnaden er mengden tid, krefter og ressurser som brukes på å lage en funksjon eller løsning. Det inkluderer alt fra planlegging og koding til testing. Hvis du bygger noe som viser seg å ikke være nødvendig, representerer byggekostnaden investeringen du gjorde i å lage det.
  • Kostnad for forsinkelse: Kostnaden for forsinkelse er den tapte muligheten eller den økonomiske konsekvensen av å ikke levere en funksjon eller løsning umiddelbart. Hvis du bruker tid på mindre kritiske funksjoner, kan du forsinke implementeringen av viktigere. Denne forsinkelsen kan resultere i tapte muligheter for inntekter eller andre fordeler.
  • Transportkostnad: Kostnaden for å bære er den pågående vanskeligheten og ekstraarbeidet forårsaket av å ha en bestemt funksjon i programvaren. Når en funksjon legger til kompleksitet, kan det gjøre det vanskeligere å jobbe med andre deler av programvaren, noe som fører til ekstra tid og krefter. Det er som å bære ekstra vekt mens du prøver å gå fremover.
  • Reparasjonskostnader: Reparasjonskostnadene, også kjent som teknisk gjeld, er de løpende kostnadene forbundet med å fikse feil, feil eller dårlige valg som ble gjort under utviklingen av en funksjon. Hvis du bygger noe som trenger justeringer senere, vil det å ta opp disse problemene medføre ekstra tid og ressurser, på samme måte som å betale ned en gjeld.

Hvorfor utvikler bør følge YAGNI-rektor



er proteinfett

Hvorfor er YAGNI viktig?

YAGNI er viktig fordi det bidrar til å holde programvareutvikling fokusert og effektiv. Ved kun å implementere funksjoner som er nødvendige, kan utviklere unngå å kaste bort tid og ressurser på unødvendig funksjonalitet. Dette kan føre til raskere utviklingstider, redusert kompleksitet og en mer vedlikeholdbar kodebase.

Ideen bak YAGNI

Å bruke YAGNI som utvikler er som å ha en praktisk guide for å holde arbeidet ditt fokusert og effektivt.

YAGNI Rektor for utviklere

1. Få de nødvendige kravene

Alle tingene prosjektet ditt trenger, og sorter dem i må-has og kan vente. Dette hjelper deg å vite nøyaktig hva du skal jobbe med. Enten du skriver det ned på papir eller skriver det ut på en skjerm, holder en liste deg organisert.

2. Diskuter med teamet ditt

Etter det er det på tide å snakke med teamet ditt. Del dine planer og mål med dem. Dette sikrer at alle er på samme side og forstår hva som må gjøres. Det er som å være lagkaptein og sørge for at alle spiller det samme spillet.

3. Analyser en enkel plan for løsningen

Nå, når det gjelder å planlegge selve arbeidet, hold det enkelt. Bryt ned de store målene dine i mindre oppgaver. Dette hjelper deg å unngå å bli overveldet og sikrer at du fokuserer på det som virkelig betyr noe. Tenk på det som å bygge et steg-for-steg veikart for prosjektet ditt.

4. Avslå hvis det ikke passer for løsningen

Noen ganger kan teamet ditt komme opp med nye ideer eller ønsker å legge til ekstra ting. Selv om disse ideene kan være kule, må du være klar til å si nei med mindre det er en liten forbedring. Det kan være vanskelig å si nei, men det hindrer deg fra å gå av sporet og gå glipp av tidsfrister.

java while loop

5. Ha en oversikt over fremgangen din

Hold oversikt over hva du har gjort. Det er som å holde poeng i en kamp. Dette hjelper deg å se hvor langt du har kommet og om du er på vei i riktig retning. Verktøy som hjelper deg med å administrere denne prosessen er som resultattavler for utviklere, som hjelper dem å holde seg på sporet og levere det kundene virkelig trenger.

YAGNI vs andre prinsipper

YAGNI (You are not Gonna Need It) er et programvareutviklingsprinsipp som fraråder å legge til funksjonalitet før det er nødvendig. Det står i kontrast til andre prinsipper på flere måter:

  1. KISS (Keep It Simple, Stupid) : KISS er et prinsipp som tar til orde for enkelhet i design og unngå unødvendig kompleksitet. YAGNI utfyller KISS ved å fraråde å legge til unødvendig funksjonalitet, noe som kan føre til økt kompleksitet.
  2. TØRR (Ikke gjenta deg selv) : DRY er et prinsipp som tar til orde for gjenbruk av kode og unngå duplisering. Mens DRY fokuserer på å eliminere overflødig kode, fokuserer YAGNI på å unngå unødvendig funksjonalitet.
  3. FAST : SOLID er et sett med prinsipper for objektorientert design som fremmer modulær, vedlikeholdbar og skalerbar kode. Mens SOLID prinsipper fokuserer på utformingen og arkitekturen til koden, fokuserer YAGNI på funksjonaliteten til koden.
  4. TDD (testdrevet utvikling) : TDD er en utviklingsprosess som innebærer å skrive tester før du skriver koden. TDD fokuserer på å skrive tester for å drive utviklingsprosessen, mens YAGNI fokuserer på å unngå unødvendig funksjonalitet.
  5. Smidig : Agile er et sett med prinsipper og praksis for programvareutvikling som legger vekt på samarbeid, fleksibilitet og tilbakemeldinger fra kunder. YAGNI kan sees på som et smidig prinsipp, da det oppmuntrer utviklere til å fokusere på å levere de viktigste funksjonene først og tilpasse seg endrede krav.

Her er en sammenligning av YAGNI med andre programvareutviklingsprinsipper basert på aspektene ved YAGNI og hvordan andre prinsipper løser dem:

Aspekt av YAGNI Hvordan andre prinsipper løser det Hvordan YAGNI løser det
Enkelhet Andre prinsipper, som KISS (Keep It Simple, Stupid), tar også til orde for enkelhet i design og unngå unødvendig kompleksitet. YAGNI utfyller KISS ved å fraråde å legge til unødvendig funksjonalitet, noe som kan føre til økt kompleksitet.
Effektivitet Andre prinsipper, som Agile og Lean Software Development, legger vekt på å levere verdi til kunden og eliminere sløsing. YAGNI fokuserer på å levere den enkleste løsningen som oppfyller gjeldende krav, noe som kan føre til raskere utviklingssykluser og mer effektiv ressursbruk.
Fleksibilitet Andre prinsipper, som Agile og Scrum, legger vekt på samarbeid, fleksibilitet og tilpasning til endrede krav. YAGNI oppfordrer utviklere til å fokusere på å levere de viktigste funksjonene først og tilpasse seg endrede krav.
Risikoreduksjon Andre prinsipper, som Test-Driven Development (TDD) og Continuous Integration (CI), fokuserer på å levere høykvalitetskode som oppfyller gjeldende krav. YAGNI fraråder å legge til unødvendig funksjonalitet, som kan redusere risikoen for å introdusere feil og andre problemer i kodebasen.
Brukerfokus Andre prinsipper, som Agile og Lean Software Development, fokuserer på å levere verdi til kunden. YAGNI hjelper til med å holde fokus på å levere de viktigste funksjonene først, som kan sikre at programvaren oppfyller brukerens behov og forventninger.
Kostnadsbesparelser Andre prinsipper, som Agile og Lean Software Development, fokuserer på å eliminere sløsing og levere verdi til kunden. YAGNI kan føre til kostnadsbesparelser ved å unngå unødvendige funksjoner og fokusere på å levere de viktigste funksjonene først.
Vedlikeholdbarhet Andre prinsipper, som SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), fokuserer på utformingen og arkitekturen til koden. YAGNI hjelper til med å holde kodebasen enkel og fokusert, noe som gjør den enklere å forstå og vedlikeholde.

Samlet sett utfyller YAGNI andre programvareutviklingsprinsipper ved å fokusere på å levere den enkleste løsningen som oppfyller gjeldende krav og unngå unødvendig funksjonalitet.

Eksempler på YAGNI

Her er noen eksempler på hvordan YAGNI kan brukes:

linux-filer
  1. Feature Creep unngått : Et utviklingsteam jobber med en nettapplikasjon. De planlegger i utgangspunktet å inkludere en funksjon som lar brukere lage og dele tilpassede avatarer. Etter å ha vurdert tiden og ressursene som kreves for å implementere denne funksjonen, bestemmer de seg for å utsette den til de får tilbakemelding fra brukere som indikerer at det er nødvendig.
  2. Kompleksitetsreduksjon : En utvikler jobber med en mobilapp som lar brukere spore treningsrutinene sine. I utgangspunktet planlegger de å inkludere en funksjon som automatisk genererer personlige treningsplaner basert på brukerens treningsmål. Etter å ha vurdert kompleksiteten ved å implementere denne funksjonen og den potensielle innvirkningen på appens ytelse, bestemmer de seg for å holde seg til en enklere tilnærming som lar brukerne lage sine egne treningsplaner manuelt.
  3. Ressurstildeling : Et utviklingsteam jobber med en e-handelsplattform. De planlegger i utgangspunktet å inkludere en funksjon som lar brukere lage ønskeliste og dele dem med venner. Etter å ha vurdert den begrensede tiden og ressursene som er tilgjengelige for prosjektet, bestemmer de seg for å fokusere på andre funksjoner som er mer kritiske for plattformens suksess.
  4. Scope Management : Et utviklingsteam jobber med et programvareprosjekt for en klient. Kunden ber i utgangspunktet om flere tilleggsfunksjoner som de mener vil være nødvendige for prosjektets suksess. Etter å ha vurdert prosjektets budsjett og tidslinje, bestemmer utviklingsteamet seg for å begrense omfanget av prosjektet til kun å inkludere de mest kritiske funksjonene.
  5. Tilbakemeldingsdrevet utvikling : Et utviklingsteam jobber med et nytt programvareprodukt. De planlegger i utgangspunktet å inkludere en funksjon som lar brukerne gi tilbakemelding på produktets ytelse. Etter å ha vurdert den potensielle innvirkningen på produktets brukervennlighet og tiden som kreves for å implementere denne funksjonen, bestemmer de seg for å utsette den til de får tilbakemelding fra brukere som indikerer at det er nødvendig.

Fordeler med YAGNI

Fordelene med YAGNI (You are not Gonna Need It) i programvareutvikling er mange og kan ha en betydelig innvirkning på utviklingsprosessen, kvaliteten på sluttproduktet og den generelle suksessen til prosjektet. Her er noen av de viktigste fordelene:

  • Raskere utvikling : Ved å fokusere kun på det som trengs for øyeblikket, kan utviklere unngå å bruke tid på funksjoner som kanskje aldri blir brukt. Dette kan føre til raskere utviklingssykluser og mer effektiv ressursbruk.
  • Enkelhet : Unødvendige funksjoner kan legge til kompleksitet til kodebasen, noe som gjør det vanskeligere å vedlikeholde og forstå. YAGNI hjelper til med å holde kodebasen enkel og fokusert, noe som gjør det lettere for utviklere å jobbe med.
  • Fleksibilitet : Ved å unngå unødvendige funksjoner kan utviklere holde kodebasen fleksibel og tilpasningsdyktig til endringer. Dette kan være spesielt viktig i hektiske miljøer der kravene kan endres ofte.
  • Redusert risiko : Unødvendige funksjoner kan introdusere feil og andre problemer i kodebasen. Ved å unngå disse funksjonene kan utviklere redusere risikoen for å introdusere feil og andre problemer i kodebasen.
  • Brukerfokus : YAGNI bidrar til å holde fokus på å levere verdi til sluttbrukeren. Ved kun å implementere funksjoner som er nødvendige for brukeren, kan utviklere sikre at programvaren oppfyller brukerens behov og forventninger.
  • Kostnadsbesparelser : Ved å unngå unødvendige funksjoner kan utviklere spare tid og ressurser som ellers ville blitt brukt på å implementere og vedlikeholde disse funksjonene. Dette kan føre til kostnadsbesparelser for organisasjonen.
  • Forbedret vedlikehold : En enklere kodebase er lettere å forstå og vedlikeholde, noe som gjør det lettere for utviklere å gjøre endringer og fikse feil.
  • Bedre brukeropplevelse : Ved å fokusere på å levere de viktigste funksjonene først, kan utviklere sikre at brukerne får funksjonaliteten de trenger raskere, noe som fører til en bedre generell brukeropplevelse.

Konklusjon

YAGNI-prinsippet kan være verdifullt i ulike aspekter av programvareutvikling. Det fremmer enkelhet, reduserer unødvendig kompleksitet og hjelper teamene med å fokusere på å levere viktig funksjonalitet. Ved å vurdere YAGNI, kan utviklere forbedre produktiviteten, vedlikeholdsevnen og den generelle prosjektsuksessen. Det er imidlertid viktig å gjøre en balanse og ikke mistolke YAGNI som en unnskyldning for å neglisjere framsyn eller arkitektoniske hensyn.

Vanlige spørsmål om YAGNI

Q1. Hva er kritikken av YAGNI?

Noen sier at YAGNI har en ulempe. De hevder at hvis du bare tenker på hva du trenger akkurat nå og ignorerer potensielle fremtidige behov, kan du ende opp med å måtte gjøre om mye av arbeidet ditt senere når nye krav dukker opp.

Q2. Hva er YAGNI-reglene?

Du kommer ikke til å trenge det. YAGNI er et programvareutviklingsprinsipp som stammer fra ekstrem programmering (XP) som sier at programmereren ikke skal legge til ekstra funksjonalitet før det er nødvendig.

Q3. Hva er argumentene for YAGNI-prinsippet?

En funksjonskrypning unngås som betyr at en utvikler ikke vil bruke funksjonalitet som neppe vil brukes i fremtiden.

Q4. Hva er forskjellen mellom SOLID og YAGNI?

SOLID forventer at du har en idé, selv om det bare er litt, om hvordan koden kan endre seg i fremtiden, spesielt med Single Responsibility Principle (SRP). Dette er som å ha håp om at du kan forutsi noen ting. På baksiden antar YAGNI at du for det meste ikke vet hvor koden er på vei i fremtiden. Det er som å være litt i tvil om vår evne til å forutsi.