Когда дублирование лучше абстракции
Вопрос
Когда ты сознательно оставишь дублирование кода вместо общей абстракции?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
DRY про дублирование знания, а не похожих строк
Если куски меняются по разным причинам или для разных команд, их лучше не объединять
Неправильная абстракция обрастает флагами и связывает модули
Правило трёх: выносить общее, когда паттерн повторился и стабилизировался
Абстракцию дешевле ввести позже, чем разобрать неудачную
Что могут спросить следом
- Как распознать неудачную абстракцию в коде?
- Как от неё избавиться?
Разбор
DRY часто понимают как «не повторяй похожий код», хотя он про дублирование знания. Если две формы сейчас выглядят одинаково, но их меняют разные команды по разным причинам, общая абстракция их свяжет: каждая правка будет тянуть флаг вроде isEdit, и через полгода компонент станет нечитаемым. Поэтому я выношу общее, когда понимаю, что это одно и то же правило, например валидатор email или кнопка UI-кита. Для остального работает правило трёх: подождать, пока паттерн повторится и устоится. Признак неудачной абстракции: много булевых параметров и ветвлений по вызывающему. Лечится инлайном обратно в места использования и новой, более узкой абстракцией.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.