Что означает «НАКЛОН» в комментарии?

9

Я читаю « Чистый код » Роберта С. Мартина, и эта фраза TILTнеобъяснимым образом появляется в некоторых примерах кода. Пример (это на 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";
        ...
    }
    ...

Исходя из контекста, я предполагаю, TILTобозначает состояние, которое недоступно и включено только для удовлетворения компилятора (например, в приведенном выше коде, TILTпоявляется в ErrorCode.OKслучае, потому что не должно быть сообщения об ошибке, если состояние OK), но Я не уверен.

Кто-нибудь знает, что TILTозначает / означает?

Кайл Лин
источник
1
Возможно связанный ответ на gaming.stackexchange.com
rwong
9
Это, вероятно, относится к наклону пинбола, а не наклону покера.
Теластин

Ответы:

13

У физических машин для пинбола есть датчики, которые обнаруживают, когда что-то снаружи пытается оказать слишком большое влияние на путь мяча, подталкивая или наклоняя машину. (Я говорю слишком много здесь, потому что у пинбола есть давняя традиция приемлемого количества движения, особенно когда мяч зависает на чем-либо.) Когда машина переходит в наклонное состояние, все, что может набрать игроку больше очков, отключен, пока мяч не упадет на дно стола. Обычно это сопровождается сигналом «Tilt» на игре и иногда предупреждающим зуммером. Думайте об этом как о пинбольном эквиваленте возникновения исключения.

Метафора Мартина натянута, потому что ErrorCode.OK, по-видимому, она действительна, statusа не то, что пытается заставить функцию делать то, чего не следует. Другими словами, этот ввод не пытается заставить функцию вернуть сообщение об ошибке для отсутствующего аргумента.


Все остальное не отвечает на ваш вопрос, но может дать вам повод прочитать остальную часть книги критическим взглядом. У меня нет доступа к книге, чтобы увидеть, выполняет ли текст, окружающий этот пример, какие-либо помахивания руками, но если нет, метод выполняет то, что не соответствует названию:

Во-первых, он не рассматривает предположительно неверный ввод или состояние как исключительное условие и не жалуется на это. Если в документации метода указано, что его следует вызывать только тогда, когда объект statusнаходится в состоянии ошибки, это, очевидно, логическая проблема в вызывающем коде, которую необходимо исправить.

Во-вторых, он возвращает строку, которая так же верна, как и все остальные, но эффективно служит магической константой. Вызывающая сторона, желающая узнать, была ли ошибка вызова метода, должна будет проверить содержимое возвращаемого значения или беспечно передать его человеку, читающему его для расшифровки (например, Operation result:без дополнительной информации).

Необязательным третьим будет то, что если компилятор ожидает полного охвата перечисленных значений, использование defaultдля отлова непокрытых случаев намного более читабельно, чем необходимость перечислять их по отдельности или в группе. (Сторона filp заключается в том, что может быть лучше позволить компилятору пожаловаться, чтобы добавление второго состояния без ошибок заставило бы программиста явно объявить, как это должно быть обработано.)

Blrfl
источник
2
У меня нет моей копии Чистого кода под рукой, но вы упустили четвертую возможность: этот метод является просто вспомогательной функцией для генерации читаемого сообщения об ошибке для чего-то вроде объекта исключения, что сделало бы его совершенно разумным, как оно есть , без каких-либо "махнув рукой" требуется.
Док Браун
@DocBrown Это справедливо, хотя следующая вещь, которая задается вопросом, заключается в том, почему объект исключения позволяет самому себе создаваться с неисключительным статусом.
Blrfl
2
К вашему сведению: классический датчик наклона представлял собой металлический маятник, которому позволяли свободно колебаться в пределах металлического кольца. Удар по машине увеличит качание маятника, и если он вступит в электрический контакт с кольцом, вы потеряете этот шар. Если вы не натолкнетесь на машину в течение определенного периода времени, качание затихнет. Маятник не был виден игроку: вам просто нужно было методом проб и ошибок узнать, как сильно ударить машину.
Соломон Слоу