Definition :
In computer programming, a code smell is any characteristic in the source code of a program that possibly indicates a deeper problem. Determining what is and is not a code smell is subjective, and varies by language, developer, and development methodology.
Further Reading :
Book : Applying UML and Patterns by Craig Larman.