Bevat deze code een bug?

Bevat deze code een bug?

Oké, misschien ga ik te snel. Even wat terminologie.

Een ChoiceInteraction is een meerkeuzevraag. Onze applicatie onderkent twee soorten meerkeuzevragen: Multiple Choice (MC) en Multiple Response (MR). Bij een MC mag een kandidaat precies één antwoord invullen. Bij een MR mag een kandidaat meer dan één antwoord invullen.

Dus, opnieuw: bevat deze code een bug? Zo ja, wat zou de bug dan zijn?

De vraag

Laat ik de vraag anders stellen: Als de MaxChoices van een ChoiceInteraction 0 is, is het dan een MC of een MR?

Dit is geen retorische vraag. Dit is precies de vraag die ik mijn collega’s onlangs stelde, toen ik in het wild op dit stuk code1 stuitte. En tot ze me een antwoord konden geven, maakte ik mezelf gek in een poging er chocola van te maken.

Bestaat er een meerkeuzevraag waarbij de kandidaat maximaal 0 antwoorden mag geven? Wat voor vraag is dat dan?

Een strikvraag? Is het eigenlijke antwoord dan: alle antwoorden zijn fout? Zou dat dan niet één van de antwoordopties moeten zijn? (Antwoord: nee.) Maar wacht, dat kan het niet zijn, want de kandidaat kan in ex hypothesi precies 0 antwoordmogelijkheden aankruisen. Hij of zij zou de vraag dus altijd goed hebben: een waardeloze strikvraag.

Zou het dan een voorbeeldvraag kunnen zijn, eentje die niet bedoeld is om in te vullen? Maar waarvan is het dan een voorbeeld, van een MC of een MR?

(Ik heb filosofie gestudeerd voordat ik de softwareontwikkeling inrolde, is dat duidelijk?)

Het antwoord

Het uiteindelijk antwoord bevond zich in minder esoterische sferen. Het was een eenvoudige business-beslissing: We zien 0 als “onbeperkt”, dus dat is een MR. Klaar, einde discussie.

Dus nee, de bovenstaande code bevat geen bug.

De softwareontwikkelaar neemt dit ter kennisgeving aan en gaat over tot de orde van de dag.

De oplossing

…of toch niet?

Ik had het bij dat antwoord kunnen laten, natuurlijk. Maar ik ken mezelf: wanneer ik de volgende keer - misschien niet volgende maand, maar volgend jaar zeker wel - opnieuw dit stuk code voor mijn neus zou krijgen, zou ik dezelfde vraag aan mijn collega’s stellen.

En tot ze me een antwoord zouden geven, zou ik mezelf gek maken in een poging er chocola van te maken.

Ik besloot toch even aan de code te rommelen:

Bevat deze code een bug? Nee!

Lessen


  1. Goed, niet precies dit stuk code. Ik heb het geheel ietwat aangepast voor het voorbeeld. We zouden nooit het type van een interactie teruggeven als string, we zijn geen beesten. ↩︎

clean code · intentie van code · leermoment · refactoren