Anti-patterns are common but poor solutions to recurring problems — approaches that seem reasonable but lead to bad outcomes (hard-to-maintain, buggy, or rigid code). Recognizing them helps you avoid common mistakes.
What anti-patterns are
ANTI-PATTERNS = commonly-used but COUNTERPRODUCTIVE solutions:
→ they seem like a solution but cause MORE problems (technical debt, bugs, rigidity)
→ the OPPOSITE of design patterns (proven good solutions)
→ recognizing them helps you AVOID common pitfalls
Common code/design anti-patterns
GOD OBJECT/CLASS → one class doing too much (huge, knows everything) → hard to maintain;
violates single responsibility
SPAGHETTI CODE → tangled, unstructured code with no clear flow → hard to follow/change
COPY-PASTE programming → duplicated code (violates DRY) → bugs/changes must be fixed everywhere
MAGIC NUMBERS/STRINGS → unexplained literal values → unclear, error-prone
PREMATURE OPTIMIZATION → optimizing before it's needed → wasted effort, complexity
GOLDEN HAMMER → over-using one familiar tool/pattern for everything ("when you have a hammer...")
HARDCODING → values that should be configurable baked into code
