Я читаю « Чистый код » Роберта С. Мартина, и эта фраза 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
означает / означает?
java
clean-code
comments
conventions
Кайл Лин
источник
источник
Ответы:
У физических машин для пинбола есть датчики, которые обнаруживают, когда что-то снаружи пытается оказать слишком большое влияние на путь мяча, подталкивая или наклоняя машину. (Я говорю слишком много здесь, потому что у пинбола есть давняя традиция приемлемого количества движения, особенно когда мяч зависает на чем-либо.) Когда машина переходит в наклонное состояние, все, что может набрать игроку больше очков, отключен, пока мяч не упадет на дно стола. Обычно это сопровождается сигналом «Tilt» на игре и иногда предупреждающим зуммером. Думайте об этом как о пинбольном эквиваленте возникновения исключения.
Метафора Мартина натянута, потому что
ErrorCode.OK
, по-видимому, она действительна,status
а не то, что пытается заставить функцию делать то, чего не следует. Другими словами, этот ввод не пытается заставить функцию вернуть сообщение об ошибке для отсутствующего аргумента.Все остальное не отвечает на ваш вопрос, но может дать вам повод прочитать остальную часть книги критическим взглядом. У меня нет доступа к книге, чтобы увидеть, выполняет ли текст, окружающий этот пример, какие-либо помахивания руками, но если нет, метод выполняет то, что не соответствует названию:
Во-первых, он не рассматривает предположительно неверный ввод или состояние как исключительное условие и не жалуется на это. Если в документации метода указано, что его следует вызывать только тогда, когда объект
status
находится в состоянии ошибки, это, очевидно, логическая проблема в вызывающем коде, которую необходимо исправить.Во-вторых, он возвращает строку, которая так же верна, как и все остальные, но эффективно служит магической константой. Вызывающая сторона, желающая узнать, была ли ошибка вызова метода, должна будет проверить содержимое возвращаемого значения или беспечно передать его человеку, читающему его для расшифровки (например,
Operation result:
без дополнительной информации).Необязательным третьим будет то, что если компилятор ожидает полного охвата перечисленных значений, использование
default
для отлова непокрытых случаев намного более читабельно, чем необходимость перечислять их по отдельности или в группе. (Сторона filp заключается в том, что может быть лучше позволить компилятору пожаловаться, чтобы добавление второго состояния без ошибок заставило бы программиста явно объявить, как это должно быть обработано.)источник