aumentado a proporciones tan gigantescas que es difícil trabajar con ellos. Por lo general, estos no surgen de inmediato, sino que se acumulan con el tiempo a medida que evoluciona el programa (y especialmente cuando nadie hace un esfuerzo por erradicarlos). bloaters
cualquier método de más de diez líneas debería hacer que empiece a hacer preguntas. 04Long Parameter List Más de tres o cuatro parámetros para un método. 02Large Class Una clase contiene muchos campos/métodos/líneas de código. 05Data Clumps A veces, diferentes partes del código contienen grupos idénticos de variables (como parámetros para conectarse a una base de datos). Estos grupos deben convertirse en sus propias clases. 03Primitive Obsession Uso de primitivas en lugar de objetos pequeños para tareas simples. Uso de constantes para codificar información. Uso de constantes de cadena como nombres de campo para su uso en matrices de datos.
pero tienen nombres de métodos diferentes. 04Temporary Field Los campos temporales obtienen sus valores (y, por lo tanto, los objetos los necesitan) solo en determinadas circunstancias. Fuera de estas circunstancias, están vacías. 02Refused Bequest Si una subclase usa solo algunos de los métodos y propiedades heredados de sus padres, la jerarquía está fuera de lugar. Los métodos innecesarios pueden simplemente no utilizarse o redefinirse y dar lugar a excepciones. 03Switch Statements Tiene un operador de cambio complejo o una secuencia de instrucciones if. Relacionado con la complejidad ciclomatica.
lugar de su código, también debe realizar muchos cambios en otros lugares. Como resultado, el desarrollo de programas se vuelve mucho más complicado y costoso. Change Preventers
pero en realidad es el olor opuesto. Cambio divergente es cuando se realizan muchos cambios en una sola clase. La cirugía de escopeta se refiere a cuando se realiza un solo cambio en varias clases simultáneamente. 02Parallel Inheritance Hierarches Siempre que crea una subclase para una clase, necesita crear una subclase para otra clase. 03Shotgun Surgey Se parece al Diverget Change, pero en realidad es el olor opuesto. Es cuando se realizan muchos cambios en una sola clase. Shoygun Surgey se refiere a cuando se realiza un solo cambio en varias clases simultáneamente.
Ya no se usa una variable, parámetro, campo, método o clase (generalmente porque es obsoleto). 02Duplicate Code Dos fragmentos de código parecen casi idénticos. 05Lazy Class Comprender y mantener las clases siempre cuesta tiempo y dinero. Por lo tanto, si una clase no hace lo suficiente para llamar su atención, debe eliminarse. 03Data Class Una clase de datos se refiere a una clase que contiene solo campos y métodos burdos para acceder a ellos (captadores y definidores). Estos son simplemente contenedores de datos utilizados por otras clases. Estas clases no contienen ninguna funcionalidad adicional y no pueden operar de forma independiente con los datos que poseen. 06Speculative Generality Una clase, método, campo o parámetro no utilizado.
objeto más que a sus propios datos. 04Message Chains En el código, ve una serie de llamadas que se asemejan a: a-> b, b -> c, c -> d 02Inappropriate Intimacy Una clase usa los campos y métodos internos de otra clase. 05Middle Man Si una clase realiza solo una acción, delegando trabajo a otra clase, ¿por qué existe? 03Incomplete Lib Class Tarde o temprano, las bibliotecas dejan de satisfacer las necesidades de los usuarios. La única solución al problema, cambiar la biblioteca, a menudo es imposible, ya que la biblioteca es de solo lectura.