Ранние обобщения: почему универсальный код часто вреден
Соблазн знакомый: вижу две похожие задачи — делаю универсальное решение на все случаи. Через полгода в этом коде десяток условий, никто не понимает, как он работает, а каждое изменение ломает что-то в соседнем сценарии.
Почему так выходит. Обобщение требует знания о том, как задачи будут меняться. На старте этого знания нет, и вы обобщаете по случайному сходству, которое дальше разойдётся.
Рабочее правило: сначала повторите. Две похожие реализации — нормально. Когда появляется третья и становится видно, что именно у них общее по существу, а не по форме, — тогда объединяйте.
Признаки преждевременного обобщения. Параметры-выключатели, меняющие поведение функции. Настройки, которыми пользуется один вызов из десяти. Уровни абстракции, за которыми стоит единственная реализация.
Что делать с уже написанным. Не переписывать сразу, а разделять при следующем изменении: когда очередная правка требует нового условия, часто дешевле разнести случаи, чем добавить ещё один флаг.
IT Воронеж — t.me/voronezh_it
IT Воронеж
@voronezh_it
Ранние обобщения: почему универсальный код часто вреден
Этот пост опубликован в Telegram-канале IT Воронеж. Подписаться можно по ссылке: @voronezh_it.