Фізичні машини для пінболу в них мають датчики, які виявляють, коли щось зовні намагається чинити занадто сильний вплив на шлях м'яча, натискаючи або нахиляючи автомат. (Я тут говорю занадто багато, тому що пінбол має давню традицію, коли певна кількість руху є прийнятною, особливо коли м'яч зависає на щось.) Коли машина переходить у нахилений стан, все, що могло б набрати гравцеві більше очок, це вимкнено, поки кулька не впаде внизу таблиці. Зазвичай це супроводжується світлом "Нахил" на грі, а іноді і попереджувальним зуммер. Розгляньте це як еквівалент пінболу - підвищення винятку.
Метафора Мартіна напружена, тому що ErrorCode.OK
, мабуть, є дійсним, status
а не тим, що намагається змусити функцію робити щось, чого не повинно. Іншими словами, цей ввід не намагається отримати функцію повернення повідомлення про помилку для відсутнього аргументу.
Решта цього не відповідає на ваше запитання, але це може дати вам підстави читати решту книги критично. У мене немає доступу до книги, щоб побачити, чи текст, що оточує цей приклад, махає руками, але якщо ні, метод робить те, що не відповідає назві:
По-перше, це те, що він не трактує імовірно недійсні дані або стан як винятковий стан і скаржиться на це. Якщо в документації методу сказано, що його слід викликати лише тоді, коли об'єкт status
перебуває у стані помилки, очевидно, що в коді виклику є логічна проблема, яку потрібно виправити.
По-друге, це те, що він повертає рядок, такий же справедливий, як і будь-який з інших, але ефективно слугує магічною константою. Користувачеві, який хоче дізнатися, чи викликав метод, був помилкою, доведеться перевірити вміст повернутого значення або коротко передати його людині, що читає його, щоб розшифрувати (наприклад, Operation result:
без додаткової інформації).
Необов’язковим третім було б те, що якщо компілятор очікує повного покриття перерахованих значень, використання default
для лову незакритих випадків набагато читає, ніж необхідність перераховувати їх окремо або в групі. (Сторона фільтра полягає в тому, що, можливо, буде краще дозволити компілятору скаржитися, щоб додавання другого статусу без помилок змусило програміста чітко заявити, як з ним слід звертатися.)