Herhaling vragen om fouten
Je wilt tien gebruikers een welkomstbericht sturen. Zonder lus zie je tien bijna-identieke print-statements.
Eén tikfout en één gebruiker krijgt "Wellkom!" in plaats van "Welkom!". Met een lus: twee regels code.
Nu β tien regels
print("Welkom, Alice!")
print("Welkom, Bob!")
print("Welkom, Charlie!")
print("Welkom, David!")
print("Welkom, Eve!")
# ... nog vijf meer
Straks β twee regels
for user in users:
print(f"Welkom, {user}!")
Interactieve demo: hoeveel regels?
Het herhalingsprobleem in diepte
Waarom herhaalde code kapotgaat
Stel: je controleert de e-mailadressen van tien gebruikers. Zonder lus:
email_1 = "alice@company.com"
if "@" not in email_1:
print("alice: ongeldig e-mailadres")
email_2 = "bob@company.com"
if "@" not in email_2:
print("bob: ongeldig e-mailadres")
# ... nog acht keer hetzelfde patroon
Dit leidt tot drie kritieke problemen:
Probleem 1: elke kopie is een nieuwe kans op een tikfout
Met tien regels identieke code is het gemakkelijk om email_1 twee keer te controleren en email_2 te vergeten.
Met honderd regels? Je zult zeker fouten missen. Bij een lus kan de logica maar één keer fout gaan.
Probleem 2: aanpassen gaat op tien plekken tegelijk
Stel je voor: de regel verandert. Een adres moet voortaan ook een punt bevatten.
Zonder lus: pas tien regels aan. Zeker één ervan vergeten. Met een lus: wijzig één regel β klaar.
Probleem 3: groeien kan niet
Je bedrijf groeit van 10 naar 100 gebruikers. Wat doe je? Honderd blokken kopiΓ«ren en plakken?
Met een lus verandert er niets: dezelfde twee regels werken voor 10 en voor 100 gebruikers.
Het groeiprobleem: elke gebruiker is een extra regel
Voorbeelden:
- 10 items: 10 regels zonder lus, 2 met. Voordeel: 8 regels bespaard. Lijkt klein.
- 100 items: 100 regels zonder lus, 2 met. Voordeel: 98 regels β en 98 plekken minder waar een fout kan zitten.
- 1000 items: 1000 regels copypaste vs. 2 regels code. Onhoudbaar zonder lus.
DRY: Don't Repeat Yourself
Professionele programmeurs hebben een regel: DRY. Elk stuk logica mag maar op één plek in je code staan.
Waarom? Omdat duplicatie bugs creΓ«ert. Je verandert iets op plek 3, vergeet plek 7, en nu loop je een half uur tegen
een fout aan die je eigenlijk niet zou mogen hebben.
Lussen zorgen dat je logica maar één keer hoeft te staan. Eén keer testen, eén keer fixen, klaar.
Wanneer is copypaste acceptabel?
Kortom: bijna nooit. Vuistregel: als je dezelfde code twee keer kopieert, zet het in een lus.
Bij de derde keer ben je al veel tijd kwijt aan onderhoud.
Stelregel: Herhaling = schuld. Lussen zijn je tool om die schuld af te lossen.