Ответ
Антипаттерн — это распространенный, но неэффективный или контрпродуктивный подход к решению типовой задачи проектирования. Использование антипаттернов приводит к усложнению кода, увеличению технического долга и появлению трудноуловимых ошибок.
Основные примеры:
-
Магические числа (Magic Numbers) Использование в коде неименованных констант, смысл которых не очевиден без дополнительного контекста. Это ухудшает читаемость и усложняет рефакторинг.
# Плохо: что такое 86400? token_expires = now() + 86400 # Хорошо: смысл очевиден SECONDS_IN_DAY = 86400 token_expires = now() + SECONDS_IN_DAY -
Божественный объект (God Object) Класс, который концентрирует в себе слишком много разнородной функциональности, нарушая принцип единой ответственности (SRP). Такие объекты сложно тестировать, поддерживать и переиспользовать.
-
Спагетти-код (Spaghetti Code) Код с запутанной и непредсказуемой структурой управления, с множеством переходов и зависимостей. Его практически невозможно читать и отлаживать.
-
Программирование копированием-вставкой (Copy-Paste Programming) Дублирование кода вместо создания переиспользуемых функций или классов. Нарушает принцип DRY (Don't Repeat Yourself) и приводит к тому, что при исправлении ошибки ее нужно исправлять во всех скопированных экземплярах.
-
Преждевременная оптимизация (Premature Optimization) Оптимизация кода до того, как профилирование выявило реальные узкие места в производительности. Часто приводит к усложнению кода ради незначительного или нулевого выигрыша.
-
Игнорирование ошибок (Error Hiding) Подавление исключений с помощью пустого блока
exceptили логирование без последующей обработки. Это скрывает проблемы в системе и делает отладку крайне сложной.# Очень плохо: ошибка будет проигнорирована try: process_data(data) except Exception: pass # Проблема скрыта