Sprint 2 ยท Beslissingen  ยท  US4: Platte guards

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.

Taak 3: De happy path ongenest onderaan

Na alle guards is alles gegarandeerd veilig. De happy path staat op niveau 0, zonder extra if-check. Dat is het doel van guards: een veilige, leesbare code.

Waarom de happy path onderaan staat

Als je guards zijn doorlopen en geen ervan heeft gestopt, is de situatie gegarandeerd veilig. Dat betekent dat je de happy path zonder extra check kunt schrijven. Er is geen else nodig โ€” de guards hebben dat al gedaan.

De structuur van een guard-script

MIN_FREE_SPACE = 20
MAX_CPU_LOAD = 80

free_space = 50
cpu_load = 30

# Guard 1
if free_space < MIN_FREE_SPACE:
    print(f"Fout: vrije ruimte {free_space}%, minimaal {MIN_FREE_SPACE}%")
    exit()

# Guard 2
if cpu_load > MAX_CPU_LOAD:
    print(f"Fout: processor {cpu_load}% belast, maximaal {MAX_CPU_LOAD}%")
    exit()

# โ† Alle guards gepasseerd! Hier weet je zeker dat alles OK is.
# Geen extra check nodig. Voer uit:
print("Alles veilig!")
print("Backup gestart...")
Vuistregel: Als je na je guards nog een else of extra if nodig hebt voor de happy path, dan zijn je guards niet compleet.

Interactieve simulatie

Hoeveel guards heb je nodig?

Met 3 guards, hoeveel niveaus diep moet het zonder guards zijn?

>_ Structuurcheck โ€” staat je happy path onderaan?

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 naar de vorm: staan de guards plat, en staat de happy path eronder op niveau 0, zonder else? Bij drone-code controleert hij ook of een guard in de lucht eerst landt.

Klik op de knop om je code te laten controleren.

Jouw opdracht: vlucht met een tussenstop

Je schrijft een vlucht in twee etappes, helemaal zelf, in two_legs.py. De drone stijgt op en vliegt 100 cm vooruit. Daar houdt hij stil voor een tussencontrole. Pas als die slaagt, volgt de tweede etappe: 100 cm terug, landen en de verbinding sluiten. Aan het eind print het script dat de vlucht voltooid is.

De tussencontrole

RegelWanneer is het goed?
BatterijMinstens 35%.
VliegtijdHooguit 90 seconden.
HoogteVan 30 tot en met 200 cm. Lager raakt hij bijna de grond, hoger het plafond.

Faalt een regel, dan meldt het script wat er mis is โ€” met de gemeten waarde en de grens โ€” en landt de drone op de plek waar hij is.

Opbouw

Zet je script in deze volgorde, en zet boven elk deel een regel commentaar met de naam van dat deel:

  1. Constanten โ€” alle grenzen en de afstand.
  2. Eerste etappe โ€” verbinden, opstijgen, vooruit.
  3. Metingen โ€” wat de tussencontrole nodig heeft.
  4. Guards โ€” de tussencontrole, plat op niveau 0.
  5. Happy path โ€” de tweede etappe, onderaan, zonder else.
De hoogteregel heeft twee grenzen. Je kunt daar twee guards voor schrijven, maar het kan ook in รฉรฉn keer. Denk terug aan US2 ยท T3: hoe schrijf je "tussen 30 en 200" als รฉรฉn vergelijking? En hoe draai je die om voor een guard?

Nieuwe drone-methode

MethodeWat het doet
tello.move_back(x)Vliegt x cm achteruit (van 20 tot 500).

Testen

Vervang voor elke test tijdelijk de metingen door vaste getallen, en zet ze daarna terug. Noteer bij elke test wat er gebeurt.

Testbatterijvliegtijdhoogte
1604080
2344080
3609180
4604029
56040200
66040201

Acceptatiecriteria

  • De vijf delen staan in de goede volgorde, elk met een regel commentaar erboven.
  • De guards staan plat op niveau 0, en de tweede etappe staat eronder op niveau 0, zonder else.
  • Elke guard meldt de gemeten waarde en de grens, laat de drone landen en sluit de verbinding voordat het script stopt.
  • De hoogteregel is รฉรฉn guard met รฉรฉn chained comparison.
  • Alle zes testgevallen zijn gedraaid en de uitkomst staat genoteerd; alleen test 1 en 5 vliegen de tweede etappe.