PassFront
  1. PassFront
  2. База знаний
  3. Архитектурные паттерны

Какие антипаттерны встречаются чаще всего: 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 или спагетти-код. На собеседовании важно назвать симптомы и способ лечения: разделять ответственности, выбирать инструмент под задачу и оптимизировать только по данным профилировщика.

Другие вопросы раздела