Улучшенная версия
В июне 2023 года я опубликовал статью «Худшие практики разработки и архитектуры» в корпоративном блоге Газпромбанка на Habr.
Сейчас я предлагаю вам переработанную и дополненную версию этой статьи. Вот что изменилось:
- Полный текст на своём сайте — статья больше не зависит от внешней площадки и читается целиком здесь, в удобном для навигации виде.
- Каждый антипаттерн вынесен в отдельную секцию — у каждой секции своя страница, оглавление и хлебные крошки, есть ссылка «назад к обзору».
- Подробные примеры кода — для каждого антипаттерна добавлены конкретные примеры «плохо → хорошо» (в оригинале разборы с кодом были только у пары разделов).
- Практические разделы «Как распознать» и «Что делать» — симптомы, по которым легко диагностировать проблему, и рекомендации по исправлению.
- Актуализация под 2026 год — добавлен разбор ИИ-копипасты и кода, сгенерированного большими языковыми моделями.
- Уточнения и пояснения — исправлены неточности оригинала, добавлены определения терминов и ссылки на литературу.
- Улучшенная навигация — оглавление, перекрёстные ссылки и полнотекстовый поиск по сайту.
Что такое антипаттерны
Понятно, что плохие практики не отвечают на вопрос «А как делать-то?» — но они помогают быстро разобраться в том, как делать не надо.
Мы часто спорим про архитектуру и хотим друг от друга знания разных правильных практик проектирования, лучшего мирового опыта и «вот этого всего». Понятно, что в реальном мире это совсем-совсем не так. И худших практик часто достаточно, чтобы начать договариваться, как не надо.
Я собрал худшее из худшего! Оказалось, что хороших практик — море, и разбираться в них долго, а вот плохих, реально плохих, — считаные единицы.
Термин «антипаттерн» появился как противоположность «паттернам проектирования» из книги «Банды четырёх» «Шаблоны проектирования». Если паттерны описывают проверенные решения типовых задач, то антипаттерны — это типичные решения, которые на практике чаще всего приводят к проблемам. Про антипаттерны можно почитать ещё здесь:
- AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis — книга Уильяма Брауна и соавторов
- antipatterns.com (и antipatterns.com/more.htm)
- sourcemaking.com/antipatterns
Содержание
- Поток лавы
- Blob (God Object)
- Непрерывное устаревание
- Функциональная декомпозиция
- Лодочный якорь
- Золотой молоток
- Спагетти-код
- Копипаста
- Mushroom management
Пока всё
В эту статью не попали, например, такие антипаттерны, как Poltergeists, потому что он слабо тянет на антипаттерн, Тупик (Dead End), Кладж ввода (Input Kludge) или Слепая вера (Blind Faith), потому что она должна автоматически решаться тестами, а также другие, которые не относятся напрямую к разработке (или мало распространены с точки зрения автора). При желании читателей рассмотрим и остальные.
Ну а я пошёл дальше собирать хорошие практики, чтобы однажды выложить сборку с ними.