Хрупкий код: что это такое
Хрупкость вообще
Что такое хрупкость вообще? Все было хорошо, потом просходит что-то небольшое, и все ломается. Относительный масштаб происшествий важен: вмешательство было небольшое, а последствия большие и необратимые.
Бытовой пример:
Я держу чашку: все хорошо.
Я разжимаю пальцы на долю секунды: небольшое изменение.
Чашка падает и разбивается: все сломалось.
Чашка хрупкая.
Я держу резиновый мячик: все хорошо.
Я разжимаю пальцы: изменение.
Мячик падает и отскакивает от пола: катастрофических изменений нет.
Мячик упругий.
Хрупкий код
Хрупкий код – как хрупкая вещь: чуть тронешь – и сломается.
С какими изменениями может сталкиваться код:
- меняются внешние условия
- команда вносит правки в код
Если от небольших изменений во внешних условиях или от небольших (неаккуратых) правок код может сильно сломаться, то код хрупкий.
Примеры: что делает код хрупким
- делать запросы к внешнему http-сервису и не проверять код ответа;
я разбираю этот случай подробнее в отдельной заметке - вызывать внешнюю программу и не проверять код выхода
- не валидировать пользовательский ввод
- иметь дублирование, когда вместе с одной частью кода обязательно надо консистентно менять другую
- иметь серию
if / else if / else if / else
, в последнейelse
-секции которой происходит содержательная работа – я собираюсь разобрать этот случай а отдельной заметке - и так далее
Что делать?
Во-первых, задумываться и обращать внимание:
- если поведение внешних систем завтра поменяется, насколько испортится поведение кода?
- если завтра коллега будет в спешке менять что-то в коде, насколько вероятно, что он нечаянно сломает его?
- какие поломки происходили в прошлом из-за хрупкости кода?
Во-вторых, изучать рекомендации по организации кода и применять их на практике.
Итого
Код будет меняться, будут меняться внешние условия. От небольших изменений код не должен бы ломаться катастрофически.
Ссылки
Связанные заметки на SiliciumC
Вообще о хрупком коде