Какие антипаттерны встречаются чаще всего: God Object, Golden Hammer, спагетти-код и другие?
Архитектурные паттерны
Антипаттерн — типовое решение, которое выглядит разумным, но систематически приводит к проблемам; у каждого есть узнаваемые симптомы и известный рефакторинг.
В коде
- God Object — класс на тысячи строк, знающий обо всём (
AppManager,Utils). Нарушает SRP, любая правка задевает всё, постоянные конфликты при мерже. Лечение: выделять классы по ответственностям. - Спагетти-код — запутанный поток управления: глубокая вложенность, флаги-переключатели, callback hell. Лечение: ранние возвраты, извлечение функций, async/await.
- Copy-paste — баг исправили в одной копии из пяти.
- Lava Flow — мёртвый код, который боятся удалить. Лечение: тесты и удаление — git всё помнит.
В решениях
- Golden Hammer — одна технология на всё: Kafka для десятка сообщений в день, микросервисы для MVP, регулярки для парсинга HTML.
- Premature optimization — оптимизация без профилировщика; по Кнуту, «корень всех зол».
- Cargo cult — паттерн или ритуал без понимания зачем: интерфейс на каждый класс, у которого одна реализация.
Как находить
Цикломатическая сложность выше 10–15 на функцию, файлы на 1000+ строк, большой fan-out, файлы-хотспоты, которые меняются почти в каждом коммите (git log --format= --name-only | sort | uniq -c).
Коротко для собеседования
Антипаттерн — привлекательное на вид решение с предсказуемо плохими последствиями, например God Object, Golden Hammer или спагетти-код. На собеседовании важно назвать симптомы и способ лечения: разделять ответственности, выбирать инструмент под задачу и оптимизировать только по данным профилировщика.