У физических машин для пинбола есть датчики, которые обнаруживают, когда что-то снаружи пытается оказать слишком большое влияние на путь мяча, подталкивая или наклоняя машину. (Я говорю слишком много здесь, потому что у пинбола есть давняя традиция приемлемого количества движения, особенно когда мяч зависает на чем-либо.) Когда машина переходит в наклонное состояние, все, что может набрать игроку больше очков, отключен, пока мяч не упадет на дно стола. Обычно это сопровождается сигналом «Tilt» на игре и иногда предупреждающим зуммером. Думайте об этом как о пинбольном эквиваленте возникновения исключения.
Метафора Мартина натянута, потому что ErrorCode.OK
, по-видимому, она действительна, status
а не то, что пытается заставить функцию делать то, чего не следует. Другими словами, этот ввод не пытается заставить функцию вернуть сообщение об ошибке для отсутствующего аргумента.
Все остальное не отвечает на ваш вопрос, но может дать вам повод прочитать остальную часть книги критическим взглядом. У меня нет доступа к книге, чтобы увидеть, выполняет ли текст, окружающий этот пример, какие-либо помахивания руками, но если нет, метод выполняет то, что не соответствует названию:
Во-первых, он не рассматривает предположительно неверный ввод или состояние как исключительное условие и не жалуется на это. Если в документации метода указано, что его следует вызывать только тогда, когда объект status
находится в состоянии ошибки, это, очевидно, логическая проблема в вызывающем коде, которую необходимо исправить.
Во-вторых, он возвращает строку, которая так же верна, как и все остальные, но эффективно служит магической константой. Вызывающая сторона, желающая узнать, была ли ошибка вызова метода, должна будет проверить содержимое возвращаемого значения или беспечно передать его человеку, читающему его для расшифровки (например, Operation result:
без дополнительной информации).
Необязательным третьим будет то, что если компилятор ожидает полного охвата перечисленных значений, использование default
для отлова непокрытых случаев намного более читабельно, чем необходимость перечислять их по отдельности или в группе. (Сторона filp заключается в том, что может быть лучше позволить компилятору пожаловаться, чтобы добавление второго состояния без ошибок заставило бы программиста явно объявить, как это должно быть обработано.)