Was bedeutet "TILT" in einem Kommentar?

9

Ich lese Clean Code von Robert C. Martin und der Satz kommt TILTunerklärlicherweise in einigen Codebeispielen vor. Beispiel (übrigens in Java):

    ...
    public String errorMessage() {
      switch (status) {
        case ErrorCode.OK:
          // TILT - Should not get here.
          return "";
        case ErrorCode.UNEXPECTED_ARGUMENT:
          return "Unexpected argument";
        case ErrorCode.MISSING_ARGUMENT:
          return "Missing argument";
        ...
    }
    ...

Aus dem Kontext bezeichne ich TILTeinen Status, der nicht erreichbar ist und nur zur Erfüllung des Compilers enthalten ist (z. B. wird im obigen Code TILTin dem ErrorCode.OKFall angezeigt , weil es keine Fehlermeldung geben sollte, wenn der Status vorliegt OK), aber Ich bin mir nicht sicher.

Weiß jemand, wofür TILTsteht / bedeutet?

Kyle Lin
quelle
1
Möglicherweise verwandte Antwort aufaming.stackexchange.com
rwong
9
Dies bezieht sich wahrscheinlich auf die Flipper-Neigung, nicht auf die Poker-Neigung.
Telastyn

Antworten:

13

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.OKvermutlich gültig ist statusund 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 statusin 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 defaultzum 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.)

Blrfl
quelle
2
Ich habe meine Kopie von Clean Code nicht zur Hand, aber Sie haben eine vierte Möglichkeit verpasst: Die Methode ist nur eine Hilfsfunktion, um eine lesbare Fehlermeldung für so etwas wie ein Ausnahmeobjekt zu generieren, was es so wie es ist vollkommen vernünftig machen würde , ohne dass ein "Handwinken" erforderlich ist.
Doc Brown
@DocBrown Das ist ein fairer Punkt, obwohl man sich als nächstes fragen sollte, warum sich ein Ausnahmeobjekt mit einem nicht außergewöhnlichen Status erstellen lässt.
Blrfl
2
Zu Ihrer Information: Der klassische Neigungssensor war ein Metallpendel, das innerhalb der Grenzen eines Metallrings frei schwingen durfte. Wenn Sie gegen die Maschine stoßen, wird das Pendel schwingen. Wenn es elektrischen Kontakt mit dem Ring hat, haben Sie diesen Ball verloren. Nicht stößt die Maschine für einen bestimmten Zeitraum des Schwingen erlauben würde , nach unten zu sterben. Das Pendel war für den Spieler nicht sichtbar: Man musste nur durch Ausprobieren lernen, wie viel Stoßen die Maschine tolerieren würde.
Solomon Slow