Програмування - це робота
Я думаю, що найпростіший спосіб відповісти на це - зрозуміти прогрес, досягнутий ООП за ці роки. Все, що робиться в OOP (і більшість парадигм програмування, з цього приводу) моделюється з урахуванням необхідних робіт .
Кожен раз, коли викликається метод, абонент каже: "Я не знаю, як зробити цю роботу, але ви знаєте як", тому ви робите це для мене ".
Це спричинило складність: що відбувається, коли викликаний метод загалом знає, як виконати роботу, але не завжди? Нам потрібен був спосіб спілкування: «Я хотів допомогти вам, я справді це зробив, але просто не можу цього зробити».
Ранньою методологією довести це було просто повернути значення "сміття". Можливо, ви очікуєте додатне ціле число, тому викликаний метод повертає від’ємне число. Ще один спосіб досягти цього - десь встановити значення помилки. На жаль, обидва способи призвели до того, що кодовий код « перевірте-перевірте-тут-щоб переконатися» - це кошерний код. У міру ускладнення справи ця система розпадається.
Виняткова аналогія
Скажімо, у вас столяр, сантехнік та електрик. Ви хочете, щоб сантехнік зафіксував свою раковину, тому він роздивляється її. Це не дуже корисно, якщо він скаже тільки вам: "Вибачте, я не можу це виправити. Це зламано". Чорт, ще гірше, якби він подивився, пішов і надіслав вам листа, в якому сказано, що він не може це виправити. Тепер ви повинні перевірити свою пошту, перш ніж ви навіть дізнаєтесь, що він не робив того, що ви хотіли.
Що б ви хотіли - це змусити його сказати вам: "Подивіться, я не зміг це виправити, тому що, здається, ваш насос не працює".
За допомогою цієї інформації ви можете зробити висновок, що хочете, щоб електрик ознайомився з проблемою. Можливо, електрик знайде щось, що стосується столяра, і вам потрібно буде попросити тесля це виправити.
Чорт забирай, ти можеш навіть не знати, що тобі потрібен електрик, ти можеш не знати, хто тобі потрібен. Ви просто середнє керівництво в бізнесі з ремонту дому, і ваша увага зосереджена на сантехніці. Тож ви кажете, що ви начальник проблеми, а потім він каже електрику, щоб виправити це.
Ось які винятки моделюють: складні режими відмов у нерозділеному вигляді. Сантехніку не потрібно знати про електрика - він навіть не повинен знати, що хтось із ланцюга може вирішити проблему. Він просто повідомляє про проблему, з якою він стикався.
Отже ... антидіаграма?
Гаразд, тому розуміння точки винятків - це перший крок. Наступне - зрозуміти, що таке анти-шаблон.
Щоб кваліфікуватись як анти-модель, потрібно
- вирішити проблему
- мають остаточно негативні наслідки
Перший момент легко виконати - система спрацювала, правда?
Другий момент - більш жорсткий. Основна причина використання виключень як нормального потоку управління погана, тому що це не їх призначення. Будь-яка задана функціональність у програмі повинна мати відносно чітке призначення, а спільне використання цієї мети призводить до зайвої плутанини.
Але це не остаточна шкода. Це поганий спосіб робити речі, і дивно, але анти-шаблон? Ні. Просто ... дивно.