logo

Vad är YAGNI-principen (You are not Gonna Need It)?

YAGNI står för Du kommer inte behöva det. Det är en princip inom mjukvaruutveckling som föreslår att utvecklare endast ska implementera funktioner som är nödvändiga för de nuvarande kraven och inte lägga till någon ytterligare funktionalitet som kan behövas i framtiden. Denna princip bygger på idén att lägga till onödiga funktioner kan leda till ökad komplexitet, längre utvecklingstider och potentiellt fler buggar.

YAGNI-principen är nära besläktad med KYSS princip (Keep It Simple, Stupid), som förespråkar enkelhet i designen och att undvika onödig komplexitet. Båda principerna uppmuntrar utvecklare att fokusera på att leverera den enklaste lösningen som uppfyller nuvarande krav, snarare än att försöka förutse och tillgodose potentiella framtida behov.



Vad är YAGNI Principal

Innehållsförteckning

Vad är YAGNI?

YAGNI är en princip som uppmuntrar utvecklare att undvika att lägga till funktioner eller funktionalitet till ett system tills de uttryckligen krävs. Det bygger på antagandet att lägga till onödiga funktioner kan leda till ökad komplexitet, längre utvecklingstider och potentiellt fler buggar. Utvecklare bör istället fokusera på att leverera den enklaste lösningen som uppfyller de nuvarande kraven.



YAGNI kommer från extrem programmering .

Varför ska en utvecklare följa YAGNI-principen?

Utvecklaren bör följa YAGNI-principerna av följande skäl:

  • Byggnadskostnad: Kostnaden för att bygga är mängden tid, ansträngning och resurser som spenderas på att skapa en funktion eller lösning. Den innehåller allt från planering och kodning till testning. Om du bygger något som visar sig inte behövas, representerar kostnaden för att bygga den investering du gjorde för att skapa det.
  • Kostnad för försening: Kostnaden för förseningar är den missade möjligheten eller den ekonomiska effekten av att inte leverera en funktion eller lösning omgående. Om du lägger tid på mindre viktiga funktioner kan du försena implementeringen av viktigare. Denna fördröjning kan resultera i missade möjligheter till intäkter eller andra fördelar.
  • Transportkostnad: Kostnaden för att bära är den pågående svårigheten och det extra arbetet som orsakas av att ha en viss funktion i din programvara. När en funktion ökar komplexiteten kan det göra det svårare att arbeta med andra delar av programvaran, vilket leder till ytterligare tid och ansträngning. Det är som att bära extra vikt när man försöker gå framåt.
  • Kostnad för reparation: Kostnaden för reparation, även känd som teknisk skuld, är den löpande kostnaden förknippad med att åtgärda misstag, buggar eller dåliga val som gjorts under utvecklingen av en funktion. Om du bygger något som behöver justeras senare, medför det att ta itu med dessa problem ytterligare tid och resurser, liknande att betala av en skuld.

Varför utvecklare bör följa YAGNI Principal



gimp spara som jpeg

Varför är YAGNI viktigt?

YAGNI är viktigt eftersom det hjälper till att hålla mjukvaruutvecklingen fokuserad och effektiv. Genom att bara implementera funktioner som är nödvändiga kan utvecklare undvika att slösa tid och resurser på onödig funktionalitet. Detta kan leda till snabbare utvecklingstider, minskad komplexitet och en mer underhållbar kodbas.

Idén bakom YAGNI

Att använda YAGNI som utvecklare är som att ha en praktisk guide för att hålla ditt arbete fokuserat och effektivt.

YAGNI Rektor för utvecklare

1. Skaffa de nödvändiga kraven

Alla saker ditt projekt behöver och sortera dem i måsten och kan vänta. Detta hjälper dig att veta exakt vad du ska arbeta med. Oavsett om du skriver ner det på papper eller skriver ut det på en skärm, håller en lista dig organiserad.

2. Diskutera med ditt team

Efter det är det dags att prata med ditt team. Dela dina planer och mål med dem. Detta säkerställer att alla är på samma sida och förstår vad som behöver göras. Det är som att vara lagkapten och se till att alla spelar samma spel.

3. Analysera en enkel plan för lösningen

Nu, när det gäller att planera själva arbetet, håll det enkelt. Dela upp dina stora mål i mindre uppgifter. Detta hjälper dig att undvika att bli överväldigad och säkerställer att du fokuserar på det som verkligen betyder något. Tänk på det som att bygga en steg-för-steg-färdplan för ditt projekt.

4. Avvisa om det inte passar för lösningen

Ibland kan ditt team komma på nya idéer eller vill lägga till extra saker. Även om dessa idéer kan vara coola, måste du vara redo att säga nej om det inte är en liten förbättring. Att säga nej kan vara svårt, men det hindrar dig från att komma ur spår och missa deadlines.

nätverk och typer

5. Ha ett register över dina framsteg

Håll ett register över vad du har gjort. Det är som att hålla poäng i en match. Detta hjälper dig att se hur långt du har kommit och om du är på väg i rätt riktning. Verktyg som hjälper dig att hantera den här processen är som resultattavlor för utvecklare, som hjälper dem att hålla sig på rätt spår och leverera vad kunderna verkligen behöver.

YAGNI vs andra principer

YAGNI (You are not Gonna Need It) är en princip för mjukvaruutveckling som avråder från att lägga till funktionalitet tills det är nödvändigt. Det står i kontrast till andra principer på flera sätt:

  1. KISS (Keep It Simple, Stupid) : KISS är en princip som förespråkar enkelhet i design och att undvika onödig komplexitet. YAGNI kompletterar KISS genom att avråda från att lägga till onödig funktionalitet, vilket kan leda till ökad komplexitet.
  2. TORRA (upprepa inte dig själv) : DRY är en princip som förespråkar kodåteranvändning och undvikande av dubbelarbete. Medan DRY fokuserar på att eliminera redundant kod, fokuserar YAGNI på att undvika onödig funktionalitet.
  3. FAST : SOLID är en uppsättning principer för objektorienterad design som främjar modulär, underhållbar och skalbar kod. Medan SOLID principer fokuserar på kodens design och arkitektur, fokuserar YAGNI på kodens funktionalitet.
  4. TDD (testdriven utveckling) : TDD är en utvecklingsprocess som innebär att man skriver tester innan man skriver koden. TDD fokuserar på att skriva tester för att driva utvecklingsprocessen, medan YAGNI fokuserar på att undvika onödig funktionalitet.
  5. Vig : Agile är en uppsättning principer och metoder för mjukvaruutveckling som betonar samarbete, flexibilitet och kundfeedback. YAGNI kan ses som en agil princip, eftersom den uppmuntrar utvecklare att fokusera på att leverera de viktigaste funktionerna först och att anpassa sig till förändrade krav.

Här är en jämförelse av YAGNI med andra principer för mjukvaruutveckling baserade på aspekterna av YAGNI och hur andra principer löser dem:

Aspekt av YAGNI Hur andra principer löser det Hur YAGNI löser det
Enkelhet Andra principer, som KISS (Keep It Simple, Stupid), förespråkar också enkelhet i design och att undvika onödig komplexitet. YAGNI kompletterar KISS genom att avråda från att lägga till onödig funktionalitet, vilket kan leda till ökad komplexitet.
Effektivitet Andra principer, som Agile och Lean Software Development, betonar att leverera värde till kunden och eliminera slöseri. YAGNI fokuserar på att leverera den enklaste lösningen som möter nuvarande krav, vilket kan leda till snabbare utvecklingscykler och effektivare resursanvändning.
Flexibilitet Andra principer, som Agile och Scrum, betonar samarbete, flexibilitet och anpassning till förändrade krav. YAGNI uppmuntrar utvecklare att fokusera på att leverera de viktigaste funktionerna först och att anpassa sig till förändrade krav.
Riskreducering Andra principer, som Testdriven Development (TDD) och Continuous Integration (CI), fokuserar på att leverera högkvalitativ kod som uppfyller de nuvarande kraven. YAGNI avråder från att lägga till onödig funktionalitet, vilket kan minska risken för att buggar och andra problem introduceras i kodbasen.
Användarfokus Andra principer, som Agile och Lean Software Development, fokuserar på att leverera värde till kunden. YAGNI hjälper till att hålla fokus på att leverera de viktigaste funktionerna först, vilket kan säkerställa att programvaran möter användarens behov och förväntningar.
Kostnadsbesparingar Andra principer, som Agile och Lean Software Development, fokuserar på att eliminera slöseri och leverera värde till kunden. YAGNI kan leda till kostnadsbesparingar genom att undvika onödiga funktioner och fokusera på att leverera de viktigaste funktionerna först.
Underhållbarhet Andra principer, såsom SOLID (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion), fokuserar på kodens design och arkitektur. YAGNI hjälper till att hålla kodbasen enkel och fokuserad, vilket gör den lättare att förstå och underhålla.

Sammantaget kompletterar YAGNI andra principer för mjukvaruutveckling genom att fokusera på att leverera den enklaste lösningen som uppfyller de nuvarande kraven och undvika onödig funktionalitet.

Exempel på YAGNI

Här är några exempel på hur YAGNI kan tillämpas:

  1. Feature Creep undviks : Ett utvecklingsteam arbetar med en webbapplikation. De planerar initialt att inkludera en funktion som låter användare skapa och dela anpassade avatarer. Men efter att ha övervägt den tid och de resurser som krävs för att implementera den här funktionen, beslutar de sig för att skjuta upp det tills de får feedback från användare som indikerar att det är nödvändigt.
  2. Komplexitetsminskning : En utvecklare arbetar på en mobilapp som låter användare spåra sina träningsrutiner. Inledningsvis planerar de att inkludera en funktion som automatiskt genererar personliga träningsplaner baserat på användarens träningsmål. Men efter att ha övervägt komplexiteten i att implementera den här funktionen och den potentiella inverkan på appens prestanda, bestämmer de sig för att hålla fast vid ett enklare tillvägagångssätt som tillåter användare att skapa sina egna träningsplaner manuellt.
  3. Resursfördelning : Ett utvecklingsteam arbetar på en e-handelsplattform. De planerar initialt att inkludera en funktion som låter användare skapa önskelista och dela dem med vänner. Men efter att ha övervägt den begränsade tid och resurser som finns tillgängliga för projektet, beslutar de sig för att fokusera på andra funktioner som är mer avgörande för plattformens framgång.
  4. Scope Management : Ett utvecklingsteam arbetar på ett programvaruprojekt åt en kund. Kunden efterfrågar initialt flera ytterligare funktioner som de tror kommer att vara nödvändiga för projektets framgång. Men efter att ha övervägt projektets budget och tidslinje beslutar utvecklingsteamet att begränsa projektets omfattning till att endast inkludera de mest kritiska funktionerna.
  5. Feedback-driven utveckling : Ett utvecklingsteam arbetar på en ny mjukvaruprodukt. De planerar initialt att inkludera en funktion som låter användare ge feedback om produktens prestanda. Men efter att ha övervägt den potentiella inverkan på produktens användbarhet och den tid som krävs för att implementera den här funktionen, beslutar de sig för att skjuta upp det tills de får feedback från användare som indikerar att det är nödvändigt.

Fördelar med YAGNI

Fördelarna med YAGNI (You are not Gonna Need It) inom mjukvaruutveckling är många och kan ha en betydande inverkan på utvecklingsprocessen, kvaliteten på slutprodukten och projektets övergripande framgång. Här är några av de viktigaste fördelarna:

  • Snabbare utveckling : Genom att bara fokusera på det som behövs för tillfället kan utvecklare undvika att lägga tid på funktioner som kanske aldrig kommer att användas. Detta kan leda till snabbare utvecklingscykler och effektivare resursanvändning.
  • Enkelhet : Onödiga funktioner kan lägga till komplexitet till kodbasen, vilket gör det svårare att underhålla och förstå. YAGNI hjälper till att hålla kodbasen enkel och fokuserad, vilket gör det lättare för utvecklare att arbeta med.
  • Flexibilitet : Genom att undvika onödiga funktioner kan utvecklare hålla kodbasen flexibel och anpassningsbar till förändringar. Detta kan vara särskilt viktigt i snabba miljöer där kraven kan ändras ofta.
  • Minskad risk : Onödiga funktioner kan introducera buggar och andra problem i kodbasen. Genom att undvika dessa funktioner kan utvecklare minska risken för att introducera buggar och andra problem i kodbasen.
  • Användarfokus : YAGNI hjälper till att hålla fokus på att leverera värde till slutanvändaren. Genom att endast implementera funktioner som är nödvändiga för användaren kan utvecklare säkerställa att programvaran uppfyller användarens behov och förväntningar.
  • Kostnadsbesparingar : Genom att undvika onödiga funktioner kan utvecklare spara tid och resurser som annars skulle läggas på att implementera och underhålla dessa funktioner. Detta kan leda till kostnadsbesparingar för organisationen.
  • Förbättrad underhåll : En enklare kodbas är lättare att förstå och underhålla, vilket gör det lättare för utvecklare att göra ändringar och fixa buggar.
  • Bättre användarupplevelse : Genom att fokusera på att leverera de viktigaste funktionerna först kan utvecklare se till att användarna får den funktionalitet de behöver tidigare, vilket leder till en bättre övergripande användarupplevelse.

Slutsats

YAGNI-principen kan vara värdefull i olika aspekter av mjukvaruutveckling. Det främjar enkelhet, minskar onödig komplexitet och hjälper team att fokusera på att leverera viktig funktionalitet. Genom att överväga YAGNI kan utvecklare förbättra produktiviteten, underhållbarheten och den övergripande projektframgången. Det är dock viktigt att göra en avvägning och inte misstolka YAGNI som en ursäkt för att försumma framförhållning eller arkitektoniska överväganden.

gimp ta bort vattenstämpel

Vanliga frågor om YAGNI

Q1. Vad är kritiken mot YAGNI?

Vissa säger att YAGNI har en baksida. De hävdar att om du bara tänker på vad du behöver just nu och ignorerar potentiella framtida behov, kan det sluta med att du måste göra om mycket av ditt arbete senare när nya krav dyker upp.

Q2. Vilka är YAGNI-reglerna?

Du kommer inte behöva det. YAGNI är en mjukvaruutvecklingsprincip som härrör från extrem programmering (XP) som säger att programmeraren inte ska lägga till extra funktionalitet förrän det är nödvändigt.

Q3. Vilka är argumenten för YAGNI-principen?

En funktionskrypning undviks som innebär att en utvecklare inte kommer att använda funktionalitet som knappast kommer att användas i framtiden.

Q4. Vad är skillnaden mellan SOLID och YAGNI?

SOLID förväntar sig att du har en idé, även om det bara är lite, om hur koden kan förändras i framtiden, särskilt med Single Responsibility Principle (SRP). Det här är som att vara hoppfull att du kan förutsäga vissa saker. Å andra sidan antar YAGNI att du oftast inte vet vart koden är på väg i framtiden. Det är som att vara lite tveksam till vår förmåga att förutsäga.