A smell is either an anti-pattern or a symptom which hints that there might be a deeper problem in the code or in the design.
Description
An anti-pattern is a smell if it manifests somewhere in the code.
Copy and Paste Programming is a methodological anti-pattern but not a code smell as it does not directly manifest in the code. Duplicated Code is the corresponding smell (and also an anti-pattern).
Shotgun Surgery is a code smell which is rather a symptom than an anti-pattern.
There are smells on different levels of abstraction: code smells and design smells
Examples
Alternative Definitions
See Also
Further Reading
Other Meanings
Discussion
Discuss this wiki article and the term on the corresponding talk page.