Основные:
- Spaghetti code (poorly structured code architecture, confusion, complexity for understanding)
- Gold hammer (overuse of patterns where they are not appropriate)
- Magic numbers (using numbered constatns to identify data — without any semantics)
- overly-Hard code (program is unportable to other devices)
- overly-Soft code (excessive tuning of program is allowed)
- Accidental complexity (complexity that comes not from business domain, but from the coding approach)
- Boat Anchor (unusable parts of program are left in the code)
- Reinventing the wheel (ignoring already existing, more superior solution)
- Lava flow («I don’t know how it works, but it works»)
- Programming by permutations (mindless games with +1, -1 and such)
- Blind faith (insufficient check of outer world data)
- Mindless commenting (non-informative comments)
- God Object (object that stores too many functions/data of various usage scenarios)
Code smells (symptoms that there might be smth bad with the code):
- 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