Object-Orientation Abusers.
Clases alternativas con interfaces diferentes
Dos clases realizan funciones idénticas, pero tienen nombres de método diferentes.
Herencia rechazada
Si una subclase usa solo algunos de los métodos y propiedades heredados de sus padres, la jerarquía está desequilibrada. Los métodos innecesarios pueden simplemente quedar sin usar o redefinirse y lanzar excepciones.
Sentencias switch
Tienes un operador switch complejo o una secuencia de sentencias if.
Campo temporal
Los campos temporales reciben sus valores (y, por tanto, los objetos los necesitan) solo en determinadas circunstancias. Fuera de esas circunstancias, están vacíos.