Міцність: ступінь, в якій система продовжує функціонувати за наявності недійсних входів або стресових екологічних умов. (Код завершено 2, с.464)
Тут важливим питанням є запитання, наскільки важлива надійність для вас. Якщо ви Facebook, дуже важливо, щоб ваш веб-сайт продовжував функціонувати, коли хтось вводить спеціальні символи на вході, і щоб ваш сервер залишався в режимі спокою, коли 100 мільйонів користувачів одночасно входили в систему. Якщо ви пишете сценарій для виконання звичайної операції, яку ви робите тільки ви, то вам не дуже важливо. Між ними багато рівнів. Оцінка того, яка міцність вам потрібна - одна з важливих навичок, яку повинен засвоїти розробник.
Принцип YAGNI стосується додавання функцій, які можуть знадобитися програмі. Але цей принцип не застосовується до надійності. Програмісти, як правило, завищують ймовірність того, що дане майбутнє розширення знадобиться (особливо, якщо це круте), але вони недооцінюють ймовірність того, що щось піде не так. Крім того, якщо виявиться, що після цього потрібна пропущена функція, програміст може записати її пізніше. Якщо виявиться, що потрібно пропустити перевірку помилок, можливо, шкода може бути зроблена.
Тому насправді краще помилитися з боку проведення перевірок на наявність незвичних умов помилок. Але є баланс. Деякі речі, які слід врахувати в цьому балансі:
- Як часто може виникнути ця помилка?
- Яка вартість виникнення цієї помилки?
- Це для внутрішнього чи зовнішнього використання?
Не забувайте, що люди можуть - і будуть - намагатися використовувати вашу програму несподіваними способами. Краще, якщо щось передбачуване відбудеться, коли вони це роблять.
В якості останньої лінії захисту використовуйте затвердження або відключення. Якщо трапиться щось, чого ви не можете зрозуміти, як з цим боротися, вимкніть програму. Це, як правило, краще, ніж дозволяти програмі продовжувати і робити щось непередбачуване.