Als developer van het vliegscript, wil ik alle veiligheidschecks plat onder elkaar zetten in plaats van ze diep in elkaar te nesten, zodat ik in รฉรฉn oogopslag zie welke checks er zijn en er zonder risico een bij kan zetten.
Naarmate je meer voorwaarden toevoegt, groeit je if-statement steeds dieper. Dit heet de "pyramid of doom" โ code die onleesbaar wordt.
Als je meerdere voorwaarden moet checken, groeit je if-statement steeds dieper. De code wijst steeds verder naar rechts โ je wordt "in de pijl geschoten".
if user_age >= 18:
if has_license:
if not banned:
print("Toegang verleend")
else:
print("Geblokkeerd")
else:
print("Geen rijbewijs")
else:
print("Te jong")
if user_age < 18:
print("Te jong")
exit()
if not has_license:
print("Geen rijbewijs")
exit()
if banned:
print("Geblokkeerd")
exit()
print("Toegang verleend")
Nesting level: 1 โ schuif om te zien hoe diep het kan gaan
Plak hier je eigen code en klik op de knop. De check voert je code niet uit โ daarvoor
gebruik je Python op je eigen laptop. Hij kijkt alleen naar de vorm: hoe diep is het genest, en staan je
guards plat met een exit()? Probeer eerst de voorbeeldcode, en herschrijf die daarna plat.
Je drone is net opgestegen en 100 cm vooruit gevlogen. Nu moet je script een beslissing nemen: nรณg 100 cm verder, of meteen landen? Hij mag alleen doorvliegen als alle drie deze regels kloppen:
Klopt een regel niet, dan print het script wat er mis is โ met de gemeten waarde โ en landt de drone direct. Klopt alles, dan vliegt hij nog 100 cm vooruit en landt daarna. De verbinding sluit je altijd af.
Je schrijft dit twee keer:
further_nested.py โ genest: elke regel is een if binnen de vorige, met een
else die meldt en landt.further_flat.py โ plat: elke regel is een guard op niveau 0, en het doorvliegen staat
onderaan.Controleer beide versies met de structuurcheck hierboven.
exit().
Vervang voor elke test tijdelijk รฉรฉn meting door een vast getal, en zet hem daarna terug. Draai beide versies met deze vier gevallen en noteer wat er gebeurt:
| Test | batterij | vliegtijd | wifi |
|---|---|---|---|
| 1 | 80 | 30 | 90 |
| 2 | 40 | 30 | 90 |
| 3 | 80 | 120 | 90 |
| 4 | 80 | 30 | 59 |
Test 2, 3 en 4 liggen precies op de grens. Kijk goed in de regels hierboven: mag de drone dan door of niet?
Acceptatiecriteria
else.