...

Хрупкость вообще

Что такое хрупкость вообще? Все было хорошо, потом просходит что-то небольшое, и все ломается. Относительный масштаб происшествий важен: вмешательство было небольшое, а последствия большие и необратимые.

Бытовой пример:

Я держу чашку: все хорошо.
Я разжимаю пальцы на долю секунды: небольшое изменение.
Чашка падает и разбивается: все сломалось.
Чашка хрупкая.

Я держу резиновый мячик: все хорошо.
Я разжимаю пальцы: изменение.
Мячик падает и отскакивает от пола: катастрофических изменений нет.
Мячик упругий.

Хрупкий код

Хрупкий код – как хрупкая вещь: чуть тронешь – и сломается.

С какими изменениями может сталкиваться код:

  • меняются внешние условия
  • команда вносит правки в код

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

Примеры: что делает код хрупким

  • делать запросы к внешнему http-сервису и не проверять код ответа;
    я разбираю этот случай подробнее в отдельной заметке
  • вызывать внешнюю программу и не проверять код выхода
  • не валидировать пользовательский ввод
  • иметь дублирование, когда вместе с одной частью кода обязательно надо консистентно менять другую
  • иметь серию if / else if / else if / else, в последней else-секции которой происходит содержательная работа – я собираюсь разобрать этот случай а отдельной заметке
  • и так далее

Что делать?

Во-первых, задумываться и обращать внимание:

  • если поведение внешних систем завтра поменяется, насколько испортится поведение кода?
  • если завтра коллега будет в спешке менять что-то в коде, насколько вероятно, что он нечаянно сломает его?
  • какие поломки происходили в прошлом из-за хрупкости кода?

Во-вторых, изучать рекомендации по организации кода и применять их на практике.

Итого

Код будет меняться, будут меняться внешние условия. От небольших изменений код не должен бы ломаться катастрофически.

Ссылки

Связанные заметки на SiliciumC

Вообще о хрупком коде