1. Duplicate Code: I f you see the same coding structure at more then one place then it is an indication of duplicate code.
2. Long Method * : Lon g method is a method with a large number of lines of code, which are performing more than one action.
3. Large Class*: Larg e class is a class with a large number of lines of code compared to other classes in the program. Fo r example if class ABC has 1,000 lines of code as compared to other classes in the same project which are have approximately 200 lines of code, then class ABC can be consider as a large class. A large class generally performs a majority of the tasks in a program.
4. Long Parameter List*: Lon g parameter lists are not encouraged in Object Oriented programming because they are hard to understand and are generally contrary to the Object-Oriented programming practices.
5. Switch Statement *: Th e problem with switch statements is that they tend to cause duplication. Polymorphism can be a good alternative for switch statements.
6. Speculative Generality: Frequently, methods and classes are designed with the assumption that future modifications will be necessary. However , these modifications are rarely made. Th e elimination of superfluous code is always desirable.
7. Comment: Comment s are not actually considered bad smells, yet, if the comments exist because of the bad code, then it is time to rectify the code.
8. Alternate Classes with Different Interface: Sometimes , one discovers classes with different names that are doing the same task. Al l the classes doing the same task should be modified to share a common cause.
9. Data Class: A class with only some getting and setting methods for data members is considered as data class.
10. Lazy Class *: A lazy class is one that is not doing any work.
11. Incomplete Library Class: This smell is related to the class libraries which provide predefined methods and behaviors to the classes in which they are include. Since most time the programmer does not have the access to library classes so it is difficult to modify the code of the library.