Що означає "TILT" у коментарі?


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

Фізичні машини для пінболу в них мають датчики, які виявляють, коли щось зовні намагається чинити занадто сильний вплив на шлях м'яча, натискаючи або нахиляючи автомат. (Я тут говорю занадто багато, тому що пінбол має давню традицію, коли певна кількість руху є прийнятною, особливо коли м'яч зависає на щось.) Коли машина переходить у нахилений стан, все, що могло б набрати гравцеві більше очок, це вимкнено, поки кулька не впаде внизу таблиці. Зазвичай це супроводжується світлом "Нахил" на грі, а іноді і попереджувальним зуммер. Розгляньте це як еквівалент пінболу - підвищення винятку.

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


Решта цього не відповідає на ваше запитання, але це може дати вам підстави читати решту книги критично. У мене немає доступу до книги, щоб побачити, чи текст, що оточує цей приклад, махає руками, але якщо ні, метод робить те, що не відповідає назві:

По-перше, це те, що він не трактує імовірно недійсні дані або стан як винятковий стан і скаржиться на це. Якщо в документації методу сказано, що його слід викликати лише тоді, коли об'єкт statusперебуває у стані помилки, очевидно, що в коді виклику є логічна проблема, яку потрібно виправити.

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

Необов’язковим третім було б те, що якщо компілятор очікує повного покриття перерахованих значень, використання defaultдля лову незакритих випадків набагато читає, ніж необхідність перераховувати їх окремо або в групі. (Сторона фільтра полягає в тому, що, можливо, буде краще дозволити компілятору скаржитися, щоб додавання другого статусу без помилок змусило програміста чітко заявити, як з ним слід звертатися.)


2
Я не маю під рукою своєї копії чистого коду, але ви пропустили четверту можливість: метод є лише допоміжною функцією для генерації читабельного повідомлення про помилку для чогось типу об’єкта винятку, що зробило б його абсолютно розумним, як це є , без необхідності будь-якої «махання рукою».
Док Браун

@DocBrown Це справедливий момент, хоча наступне, що слід задатись питанням, було б чому чому об’єкт винятку дозволяє будувати себе з невиключним статусом.
Blrfl

2
FYI: Класичний датчик нахилу - це металевий маятник, якому дозволялося вільно гойдатися в межах металевого кільця. Нахил машини збільшив би розгойдування маятника, і якщо він зробив електричний контакт з кільцем, то ви втратили цю кулю. Якщо не стикатися з машиною протягом певного періоду часу, це дозволило б розгойдуватися. Маятник не був видно гравцеві: ви просто повинні були навчитися шляхом спроб і помилок, наскільки сильно буде терпіти нахил машини.
Соломон повільно
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.