Основные:
- Spaghetti code (плохо структурированная архитектура кода, запутанность, сложность для понимания)
- Gold hammer (overuse of patterns where they are not appropriate)
- Magic numbers (использование числовых констант для идентификации данных — без какой либо семантики)
- Hard code (программа становится непереносимой на другие устройства)
- overly-Soft code (в программе настраивается абсолютно всё)
- Accidental complexity (ненужная сложность решения)
- Boat Anchor (оставление в программе неиспользуемых частей)
- Reinventing the wheel (использование своего решения вместо уже готового, причём лучшего)
- Lava flow (код, описываемый как «не знаю как, но оно работает»)
- Programming by permutations (бездумные игры с +1, -1, перестановкой порядка и т.п.)
- Blind faith (недостаточная проверка входящих данных из внешнего мира)
- Mindless commenting (лишние и неинформативные комментарии)
- God Object (объект, хранящий в себе слишком много разноплановых функций и/или данных)
Code smells (симптомы, что с кодом может быть что-то не так):
- Duplicated code
- Improper namings
- Dead code (code that is never reached)
- Middle man (class that delegates all functionality to other class)
- Long parameter list
- Data Clamps (certain class makes sense only in group rather than individually)
- Big functions
- Feature Envy (overly dependense of one class from another)
- Commented-out code
- Global variables