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