Code Smell
- Large method - a method, function, or procedure that has grown too large.
- Large class - a class that has grown too large, see God object.
- Feature envy - a class that uses methods of another class excessively.
- Inappropriate intimacy - a class that has dependencies on implementation details of another class.
- Refused bequest - a class that overrides a method of a base class in such a way that the contract of the base class is not honored by derived class. See Liskov substitution principle.
Los dos primeras yo creo que son bastante fáciles de ver y de corregir. Normalmente no me gusta trabajar con clases de más de 300-400 líneas, aunque siempre hay excepciones claro.
Ahora, las otras no las veo tan claras… Por ejemplo feature envy. Quicir, si una clase utiliza mucho un método de otra… pues es lo que tiene ¿no? Para eso están los métodos públicos. Sobre las otras igual, me cuesta pensar en casos prácticos donde eso pase.
Aún así, yo creo que todos tenemos un 6 sentido para darnos cuenta de que algo no va bien en el código. Compilar, compila, pero huele. El problema está en encontrar qué es lo que huele y solucionarlo, claro.