Physische Flipperautomaten enthalten Sensoren, die erkennen, wenn etwas außerhalb versucht, den Weg des Balls zu stark zu beeinflussen, indem sie den Automaten anstoßen oder kippen. (Ich sage hier zu viel , weil Flipper eine lange Tradition haben, dass ein gewisses Maß an Bewegung akzeptabel ist, insbesondere wenn der Ball an etwas aufgehängt wird.) Wenn die Maschine in den gekippten Zustand versetzt wird, ist alles, was dem Spieler mehr Punkte bringen könnte deaktiviert, bis der Ball vom Boden des Tisches fällt. Dies wird normalerweise von einem "Tilt" -Licht im Spiel und manchmal einem Warnsummer begleitet. Betrachten Sie es als das Flipper-Äquivalent zum Auslösen einer Ausnahme.
Martins Metapher ist angespannt, weil sie ErrorCode.OK
vermutlich gültig ist status
und nicht etwas, das versucht, die Funktion dazu zu zwingen, etwas zu tun, was sie nicht tun sollte. Mit anderen Worten, diese Eingabe versucht nicht, die Funktion dazu zu bringen, die Fehlermeldung für ein fehlendes Argument zurückzugeben.
Der Rest beantwortet Ihre Frage nicht, kann aber Anlass geben, den Rest des Buches kritisch zu lesen. Ich habe keinen Zugriff auf das Buch, um zu sehen, ob der Text, der dieses Beispiel umgibt, von Hand winkt, aber wenn nicht, führt die Methode Dinge aus, die dem Titel nicht gerecht werden:
Erstens behandelt es vermutlich ungültige Eingaben oder Zustände nicht als Ausnahmebedingung und beschwert sich darüber. Wenn in der Dokumentation der Methode angegeben ist, dass sie nur aufgerufen werden soll, wenn sich das Objekt status
in einem Fehlerzustand befindet, handelt es sich eindeutig um ein logisches Problem im aufrufenden Code, das korrigiert werden muss.
Zweitens wird eine Zeichenfolge zurückgegeben, die genauso gültig ist wie alle anderen, aber effektiv als magische Konstante dient. Ein Aufrufer, der wissen möchte, ob das Aufrufen der Methode ein Fehler war, muss den Inhalt des Rückgabewerts überprüfen oder ihn munter an den Menschen weitergeben, der ihn liest, um ihn zu entschlüsseln (z. B. Operation result:
ohne zusätzliche Informationen).
Ein optionales Drittel wäre, dass, wenn der Compiler eine vollständige Abdeckung der aufgezählten Werte erwartet, die Verwendung default
zum Abfangen der nicht abgedeckten Fälle viel besser lesbar ist, als sie einzeln oder in einer Gruppe aufzählen zu müssen. (Die Filp-Seite ist, dass es möglicherweise besser ist, den Compiler sich beschweren zu lassen, damit das Hinzufügen eines zweiten, fehlerfreien Status den Programmierer dazu zwingt, explizit zu erklären, wie damit umgegangen werden soll.)