DRY-, KISS- og YAGNI-principper

aug 11, 2021
admin

Dette er tre principper, som alle udviklere bør lægge vægt på, fordi de handler om ren kode. I denne artikel vil vi forstå, hvad de hver især betyder.

DRY-princippet

DRY står for Don’t Repeat Yourself (gentag ikke dig selv). I bogen ‘The Pragmatic Programmer’ kan vi se denne definition på DRY:

Hvert stykke viden skal have en enkelt, entydig, autoritativ repræsentation i et system.

Det betyder, at du ikke bør have duplikeret kode. Det er lettere at vedligeholde en kode, der kun er ét sted, for hvis man skal ændre noget i koden, skal man blot ændre ét sted. Udover det, hvis du har den samme kode to eller flere steder, er chancen for at denne kode bliver anderledes i løbet af tiden stor, og når det sker, vil det blive en nem måde at indføre fejl i dit system på. Duplikeret kode gør også koden mere kompleks og unødigt større.

Du bør heller ikke skrive tvetydig kode. Dine klasser, dine variabler, dine funktioner, de skal have et bestemt navn, og deres navn skal passe til deres ansvar. Hvis du har en funktion, bør du vide, hvad funktionen gør ved blot at læse dens navn, uden at det er nødvendigt at læse koden inde i den.

I bogen ‘The Pragmatic Programmer’ kan vi også se, at:

DRY handler om at duplikering af viden, af hensigten. Det handler om at udtrykke
den samme ting to forskellige steder, muligvis på to helt forskellige måder

Det betyder, at det ikke kun handler om copy and past kode – ja, det er også med – men går videre end det. Det handler også om at have forskellig kode, der gør den samme ting. Måske kan man have forskellig kode to eller flere steder, men de gør det samme på forskellige måder, det bør også undgås.

KISS-princippet

KISS er en forkortelse for Keep It Simple, Stupid (hold det enkelt, dumt). Dette princip siger om at gøre din kode simpel. Du bør undgå unødvendig kompleksitet. En simpel kode er lettere at vedligeholde og lettere at forstå.

Du kan anvende dette princip i designet og i implementeringen af koden. Du bør fjerne dobbeltkode, bør fjerne unødvendige funktioner, ikke bruge unødvendige variabler og metoder, bruge navne til variabler og metoder, der giver mening og passer til deres ansvarsområder, og altid, når det er muligt, følge kendte standarder for kodeudvikling. Du bør også adskille ansvaret for dine klasser og ansvaret fra projektets lag.

Sommetider behøver du ikke at implementere noget nyt for at deltage i dine behov, du kan blot gøre brug af funktionerne i det programmeringssprog, som du bruger. Derfor er det godt, at du kender funktionerne i det programmeringssprog, du arbejder med.

Hvis du arbejder i en kode, der allerede er implementeret, og du ser noget, der ikke er nødvendigt eller kunne være mere simpelt, bør du overveje at refaktorisere det.

YAGNI-princippet

YAGNI står for You Ain’t Gonna Need It. Det er et princip fra softwareudviklingsmetodologien Extreme Programming (XP). Dette princip siger, at man ikke skal skabe funktioner, som det ikke er virkelig nødvendigt.

Dette princip det ligner KISS-princippet, når at begge sigter mod en enklere løsning. Forskellen mellem dem er, at YAGNI fokuserer på at fjerne unødvendig funktionalitet og logik, og KISS fokuserer på kompleksiteten.

Ron Jeffries, en af medstifterne af XP, sagde engang:

Implementer altid ting, når du rent faktisk har brug for dem, aldrig når du bare forudser, at du har brug for dem.

Det betyder, at du ikke skal implementere funktionalitet, bare fordi du tror, at du måske får brug for den en dag, men implementere den først, når du virkelig har brug for den. Hvis du gør det, undgår du at bruge tid på implementeringer, der slet ikke var nødvendige, og som måske aldrig vil blive brugt.

Slutning

Følger du disse principper, vil du kunne skrive bedre kode. Husk, at en ren kode er nemmere at vedligeholde, nemmere at forstå, og det vil helt sikkert spare dig tid, når du skal ændre eller implementere noget. Undgå at bruge duplikeret kode, prøv at holde din kode så enkel som muligt, og implementer kun funktioner, når det virkelig er nødvendigt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.