DRY: Herhaal Jezelf Niet

Gepubliceerd op 23 januari 2024 • 4 min leestijd • 748 woorden
Terwijl ik laatst bezig was met allerlei Hugo-zaken, kwam ik de afkorting DRY tegen. Die moest ik toch echt even opzoeken. DRY staat voor Don’t Repeat…
DRY: Herhaal Jezelf Niet
Foto van A.J. Elsinga

Terwijl ik laatst bezig was met allerlei Hugo-zaken, kwam ik de afkorting DRY tegen. Die moest ik toch echt even opzoeken. DRY staat voor Don’t Repeat Yourself, oftewel herhaal jezelf niet.

Herhaal jezelf niet  

Het DRY-principe luidt als volgt: “Elk stukje kennis moet een enkele, ondubbelzinnige, gezaghebbende vertegenwoordiging binnen een systeem hebben.” Het is een hele mondvol. DRY komt uit The Pragmatic Programmer, een boek over softwareontwikkeling. Achteraf (her)ken ik de methode wel. Tijdens mijn opleiding, lang, lang geleden, heb ik dit wel gebruikt. Een van de dingen waar ik het voor gebruikt heb is database-normalisatie. Uiteindelijk wordt de informatie maar één keer opgeslagen en verwijs je naar de data wanneer je dit nodig hebt.

Een voorbeeld: Een registratiesysteem voor verkopen moet een aantal gegevens opslaan bij een verkoop. Je wilt tenslotte weten wat de klant gekocht heeft, waar het product naar toegestuurd moet worden en wat het gekost heeft. Je zou natuurlijk in een Excelsheet kunnen gebruiken, waar op iedere regel alle informatie staat.

product prijs klantnaam straat+huisnummer postcode woonplaats
fietsbel 3,99 Pietje Puk Fietsplein 1 1121 AA Amsterdam
ventieldopje 0,95 Pietje Puk Fietsplein 1 1121 AA Amsterdam
stuur 15,49 Pietje Puk Fietsplein 1 1121 AA Amsterdam

Je ziet waarschijnlijk al waar het naar toe gaat. Er staat alleen al in deze drie regels drie keer dezelfde informatie. Hoe handig zou het zijn als je een tabel had met de klantgegevens, waar je naar kunt verwijzen in de verkooptabel.

Tabel klanten:

klantID Naam straat + huisnummer Postcode Woonplaats
1 Pietje Puk Fietsplein 1 1121 AA Amsterdam

Tabel verkopen:

klantID product prijs
1 fietsbel 3,99
1 ventieldopje 0,95
1 stuur 15,49

Naast dat het tekens en wellicht opslagruimte scheelt, heeft het nog een voordeel. Aangezien je nu maar één keer de data hebt opgeslagen, is het ook makkelijker om te wijzigen. Stel dat de klant verhuist, dan hoeft de data maar op één plek te wijzigen. Dit voorkomt overbodig typewerk, maar vooral fouten.

Ditzelfde principe gaat op voor heel veel dingen. Je kunt het beter iets één keer goed programmeren of bouwen en dan hergebruiken, dan iedere keer het wiel opnieuw uitvinden.

Je zou kunnen zeggen dat het een methode is voor luie mensen, of liever, slimme mensen. Waarom zou je dingen vaker doen die je ook kunt automatiseren. Voordeel is dan ook nog eens dat ze foutvrij worden uitgevoerd en altijd op dezelfde manier. Tenminste, als je het goed geautomatiseerd hebt, anders gaat altijd op dezelfde manier fout.

afbeelding

Ook voor andere dingen  

DRY komt dus uit de ontwikkelaarshoek, maar ik geloof dat het als filosofie ook op andere plekken toegepast kan worden. Want waarom zou je het twee keer doen, als je het één keer goed kunt doen. Ja, je besteedt misschien iets meer tijd aan datgene wat je moet doen, maar de volgende keer kost het maar een fractie van de tijd, plus je kunt de uitkomst al voorspellen.

Ik heb mijn buddy AI (ChatGPT) gevraagd wat de voordelen zijn van DRY voor programmeren. Be gentle.. Dit is dus niet mijn communicatiestijl :)

  1. Efficiëntie: Code niet herhalen betekent dat je minder schrijft, wat leidt tot snellere ontwikkeling.
  2. Onderhoudbaarheid: Wanneer een stukje logica moet worden aangepast, hoeft dit slechts op één plaats te gebeuren. Dit minimaliseert het risico op inconsistenties en fouten.
  3. Leesbaarheid: Een schone codebase zonder herhalingen is makkelijker te begrijpen voor nieuwe ontwikkelaars die aan een project werken.
  4. Testbaarheid: Code die zich op één locatie bevindt, is eenvoudiger te testen en te valideren.
  5. Flexibiliteit en schaalbaarheid: Systemen gebaseerd op het DRY-principe zijn makkelijker aan te passen aan veranderingen en nieuwe functionaliteiten.

Het zijn mooie examenvragen als je het mij vraagt. Het klinkt wel logisch: Als je dingen maar één keer opschrijft/programmeert, dan hoef je bij troubleshooten natuurlijk ook maar op één plek te kijken. En de leesbaarheid kan vergroten, als je het tenminste de keer dat je het bouwt ook netjes programmeert.

Maar ook voor je ‘reguliere’ leven, buiten programmeren, is het wel een handige methode. Wanneer je één keer iets bedacht hebt, kun je dat beschrijven of ergens opslaan, zodat je het kunt hergebruiken. Waarom zou je het wiel opnieuw uitvinden? Nou wil ik dit geen reclamespot maken voor Obisidian , maar je zou het natuurlijk kunnen gebruiken om je opgedane kennis en ervaring op te slaan.

En nu jij  

Was jij al bekend met de DRY methode? of vind je het net als mij best logisch en hoef je er niet zo over na te denken? Laat het hieronder weten.

Zie ook

    Follow me