1 неделю назад
Дублирование дешевле неправильной абстракции
Разработчик A замечает дублирование кода, извлекает его в новую абстракцию и тут же понимает, что решил проблему. Разработчик B получает новое требование, которое почти подходит существующей абстракции. Чтобы сохранить её, B добавляет параметр и условную логику. Затем приходит требование C, потом D. Конечная абстракция обрастает условными ветками, становится непонятной и ломкой, каждое новое изменение рискует сломать весь механизм. Вместо попытки спасти усложнившуюся абстракцию через укол новых параметров, Sandi Metz рекомендует развернуться назад: разворошить абстракцию обратно на дублирование, дать каждому вызывающему коду только нужные ему части...