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