DRY-, KISS- och YAGNI-principer
Det här är tre principer som alla utvecklare bör bry sig om, eftersom de handlar om ren kod. I den här artikeln ska vi förstå vad var och en av dem innebär.
DRY-principen
DRY står för Don’t Repeat Yourself. I boken ”The Pragmatic Programmer” kan vi se den här definitionen för DRY:
Alla delar av kunskapen måste ha en enda, otvetydig, auktoritativ representation inom ett system.
Detta innebär att du inte bör ha duplicerad kod. Det är lättare att underhålla en kod som bara finns på ett ställe, för om du behöver ändra något i koden behöver du bara ändra på ett ställe. Dessutom, om du har samma kod på två eller flera ställen är chansen stor att denna kod blir annorlunda under tiden, och när detta händer blir det ett enkelt sätt att införa buggar i ditt system. Duplicerad kod gör också koden mer komplex och onödigt stor.
Du bör inte heller skriva tvetydig kod. Dina klasser, dina variabler, dina funktioner, de ska ha ett specifikt namn, och deras namn måste matcha deras ansvar. Om du har en funktion bör du veta vad funktionen gör genom att bara läsa dess namn, utan att behöva läsa koden inuti den.
I boken ”The Pragmatic Programmer” kan vi också se att:
DRY handlar om duplicering av kunskap, av intentioner. Det handlar om att uttrycka
samma sak på två olika ställen, möjligen på två helt olika sätt
Det betyder att det inte bara handlar om att kopiera och klistra in kod – ja, det ingår också – utan går längre än så. Det handlar också om att ha olika kod som gör samma sak. Kanske kan man ha olika kod på två eller flera ställen, men de gör samma sak på olika sätt, detta bör också undvikas.
KISS-principen
KISS är en akronym för Keep It Simple, Stupid. Denna princip säger om att göra din kod enkel. Du bör undvika onödig komplexitet. En enkel kod är lättare att underhålla och lättare att förstå.
Du kan tillämpa denna princip vid utformningen och vid implementeringen av koden. Du bör eliminera dubblerad kod, bör ta bort onödiga funktioner, använd inte onödiga variabler och metoder, använd namn för variabler och metoder som är vettiga och matchar deras ansvarsområden, och följ alltid när det är möjligt, know standards för kodutveckling. Du bör också separera ansvaret för dina klasser och ansvaret från skikten i projektet.
Ibland behöver du inte implementera något nytt för att tillgodose dina behov, du kan helt enkelt använda dig av funktionerna i det programmeringsspråk som du använder. För det är det bra att du känner till funktionerna i det programmeringsspråk som du arbetar med.
Om du arbetar i en kod som redan är implementerad, och du ser något som inte är nödvändigt eller som skulle kunna vara enklare, bör du överväga att refaktorisera den.
YAGNI-principen
YAGNI står för You Ain’t Gonna Need It. Det är en princip från mjukvaruutvecklingsmetoden Extreme Programming (XP). Principen säger att man inte ska skapa funktioner som man egentligen inte behöver.
Denna princip liknar KISS-principen, när båda syftar till en enklare lösning. Skillnaden mellan dem är att YAGNI fokuserar på att ta bort onödig funktionalitet och logik, och KISS fokuserar på komplexiteten.
Ron Jeffries, en av medgrundarna av XP, sa en gång:
Implementera alltid saker när du faktiskt behöver dem, aldrig när du bara förutser att du behöver dem.
Det betyder att du inte ska implementera funktionalitet bara för att du tror att du kanske kommer att behöva den en dag, utan implementera den bara när du verkligen behöver den. Genom att göra det undviker du att spendera tid med implementeringar som inte ens var nödvändiga och kanske aldrig kommer att användas.
Slutsats
Följs dessa principer kommer du att kunna skriva bättre kod. Kom ihåg att en ren kod är lättare att hantera, lättare att förstå och att den säkert kommer att spara tid när du behöver ändra eller implementera något. Undvik att använda dubblerad kod, försök att hålla din kod så enkel som möjligt och implementera bara funktioner när det verkligen är nödvändigt.