Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Code Smell

Code Smell

Buenas prácticas, guión de la Churrería dada el 13/01/2022

Jose María Flores Zazo

January 13, 2022
Tweet

More Decks by Jose María Flores Zazo

Other Decks in Programming

Transcript

  1. LA CHURRERÍA Idea original de_ Daniel Córdoba Cárdenas @Dani_CCardenas Con

    la colaboración de_ Jorge Olivé @JorgeOliv6 Jose María Flores Zazo @jfmloreszazo
  2. Los bloaters pueden ser códigos, métodos y clases que han

    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
  3. 01Long Method Un método contiene demasiadas líneas de código. Generalmente,

    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.
  4. Son de una aplicación incompleta o incorrecta en base a

    los principios de programación orientada a objetos. OO Abusers
  5. 01Alternative Class with Different Interface Dos clases realizan funciones idénticas,

    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.
  6. Estos olores significan que, si necesita cambiar algo en un

    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
  7. 01Divergent Change Divergent Change se asemeja a la Shotgun Surgey,

    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.
  8. Prescindible, es algo sin sentido e innecesario cuya ausencia haría

    que el código fuera más limpio, más eficiente y más fácil de entender. Dispensables
  9. 01Comments Un método está lleno de comentarios explicativos. 04Dead Code

    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.
  10. Todos los olores de este grupo contribuyen a un acoplamiento

    excesivo entre clases o muestran lo que sucede si el acoplamiento se reemplaza por una delegación excesiva. Couplers
  11. 01Feature Envy Un método accede a los datos de otro

    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.