Не їжте винятків

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

Femme Fitale

З тих пір старий код продовжує старіти. Дуже мало програмного забезпечення буде працювати вічно без любові та уваги - виправлення безпеки та інші необхідні речі створюють рух, а рух створює зміни, які руйнують речі. З тих пір ми дуже мало зробили зі старим кодом.

Ми повернулися

Зараз ми екстерналізували більшу частину старої бідності і переписали на нову доброту ... переважно. Але, як і сумні спогади, старий код не зникає.

І тому ми заглиблюємось у те, що ми зараз називаємо «поганим», згадуючи численні жахи, які ми давно вже могли вигнати з голови. Є багато.

За останні кілька днів я побачив справді поганий код.

І переможець найгіршого анти-шаблону - це ...

Ця закономірність, очевидно, була тим, як круті діти утримували AirBrake від надсилання нам електронних листів про “незначні” помилки. У людей з’явилася звичка писати це все в такий рядок, як open_a_file (ім'я файлу) порятунку nil, про що я навіть не знав, що легальний рубін (це так).

Хіба це не найкращий приклад того, як використовувати властиву виразність і красу рубіну?

Це називається «винятком з їжі», або «помилками при ковтанні», або «мовчазною недостатністю». Це зло.

Це просто неправильно. Це ніколи не правильно (майже). Це ліниве, безвідповідальне кодування.

Гірше, правильний спосіб вирішити це - просто писати

Якщо це спричинить виняток, ми будемо знати. Якщо є загальний і прийнятний випадок збою, розгляньте це очевидно, наприклад

Істина чи наслідки

Я звучу гірко і сердито, тому що останні кілька років мого життя часто перебивав код, який не вдається написати цим ледачим, безвідповідальним людям. Це трапляється лише тоді, коли я відпочиваю, сплю або іншим чином не зацікавлений у відстеженні помилок якогось недбалого так званого інженера, створеного в 2009 році.

Виявити випадки тихої несправності важко. Помилки при ковтанні, як правило, дозволяють стану поганого стану затримуватися і нагноюватися, тягнучись за собою.

Тож до того часу, коли щось голосно не вдається, часто неможливо прослідкувати першопричину. Я провів багато годин ночей та вихідних, придумуючи код для того, щоб з’ясувати стан відмови. Найчастіше це трапляється після виявлення помилки, яку легко виявити.

Я просто не розумію, як цей явно неправильний шаблон здавався нормою у цій давній основі коду. Просто не розумію.