Les flippers physiques ont des capteurs qui détectent quand quelque chose à l'extérieur essaie d'exercer trop d'influence sur la trajectoire de la balle en poussant ou en inclinant la machine. (J'en dis trop ici parce que le flipper a une longue tradition selon laquelle une certaine quantité de mouvement est acceptable, surtout lorsque le ballon est accroché à quelque chose.) Lorsque la machine passe à l'état incliné, tout ce qui pourrait marquer plus de points au joueur est désactivé jusqu'à ce que le ballon tombe du bas de la table. Ceci est généralement accompagné d'un voyant "Tilt" sur le jeu et parfois d'un buzzer d'avertissement. Considérez-le comme l'équivalent du flipper de lever une exception.
La métaphore de Martin est tendue parce que ErrorCode.OK
c'est, vraisemblablement, une status
chose valide et non quelque chose qui essaie de forcer la fonction à faire quelque chose qu'elle ne devrait pas. En d'autres termes, cette entrée n'essaie pas d'obtenir la fonction pour renvoyer le message d'erreur pour un argument manquant.
Le reste de cela ne répond pas à votre question, mais cela peut vous donner une raison de lire le reste du livre avec un œil critique. Je n'ai pas accès au livre pour voir si le texte entourant cet exemple fait un signe de la main, mais sinon, la méthode fait des choses qui ne sont pas à la hauteur du titre:
Premièrement, il ne traite pas les entrées ou états présumés non valides comme une condition exceptionnelle et s'en plaint. Si la documentation de la méthode indique qu'elle ne doit être appelée que lorsque l'objet status
est dans un état d'erreur, c'est clairement un problème logique dans le code appelant qui doit être corrigé.
Deuxièmement, il renvoie une chaîne qui est tout aussi valide que les autres, mais sert en fait de constante magique. Un appelant qui veut savoir si l'invocation de la méthode était une erreur devra vérifier le contenu de la valeur de retour ou la transmettre allègrement à l'humain qui la lit pour la déchiffrer (par exemple, Operation result:
sans information supplémentaire).
Un troisième optionnel serait que si le compilateur s'attend à une couverture complète des valeurs énumérées, l'utilisation default
pour intercepter les cas non couverts est beaucoup plus lisible que d'avoir à les énumérer individuellement ou en groupe. (Le côté filp est qu'il pourrait être préférable de laisser le compilateur se plaindre afin que l'ajout d'un deuxième statut sans erreur oblige le programmeur à déclarer explicitement comment il doit être géré.)