
Antipatrones
“Una forma literaria que describe una solución recurrente que genera consecuencias negativas”
Sirve para detectar fallos, o una manera de descartar las alternativas incorrectas que nos guíe a la elección de la alternativa óptima. Los antipatrones poseen elementos, ejemplos de los que son más comunes y la problemática que resuelve por ultimo un código fuente de un ejemplo sobre lo que no debemos implementar en el lenguaje JAVA. Sin embargo, se puede implementar en otros lenguajes de programación.
Elementos
Nombre: establece una manera inequívoca y representativa de identificar la solución en forma resumida e informativa.
Solución Antipatrón: Incluye el síntoma, consecuencia y una descripción abstracta de la solución problemática.
Solución Refactorizada: Descripción de las consecuencias positivas encontradas después de aplicada la solución refactorizada.
¿Cómo identificarlos?
A continuación, se van a mencionar algunos ejemplos más destacados a la hora de codificar que probablemente muchos de nosotros hemos cometido.
The blob:Conocido como el objeto todopoderoso. Esta es la típica clase que monopoliza los procesos, tiene y hace de todo. Es difícil de rehusar y probar. La solución es dividirla y aplicar el principio de simple responsabilidad.
Lava seca: Conocido como código muerto. Un porcentaje de desarrolladores prefiere crear código en vez de modificar el que existe ya que no fue hecho por ellos. La solución es completar el proceso de arquitectura antes de poner en producción el código.
Síntomas: Código importante y complejo sin documentar. Extensos bloques de código documentado sin explicación. Código sin usar.
Descomposición funcional: Se conoce como antipatrón no orientado de objetos. Ocurre al tratar de implementar un sistema de programación estructurada a POO. La solución es rediseñar el sistema totalmente orientado a objetos.
Poltergeists: Conocido como la gitana, fantasmas que aparece y desaparece misteriosamente. No se sabe bien lo que hacen algunas clases. La solución es cazar estos fantasmas y crear un buen diseño.
Síntomas: Clases que no tienen una responsabilidad completa solo pedazos. Su uso es temporal debido a su corta vida, como esas que usamos solo para llamar un método de otra clase y pasar información hacia otro lado. Clases sin estado.
Martillo de oro: Conocido como el amigo fiel. La solución es un cambio de mentalidad, desarrollar mi herramienta con límites definidos y posibilidades de comunicación con otros componentes o herramientas de software.
Síntomas: Es una aplicación o herramienta de software que se cree la mejor solución para todas las empresa, y que es aplicable universalmente.
Programación copiar y pegar: Conocida como codificación portapapeles. La solución es crear algo genérico y que se use en todos los sitios donde sea requerido.
Síntomas:
Es cuando se copia y se pega código de un lado a otro desde soluciones existentes, se identifica por la existencia de segmentos de código similares.
Código espagueti: Aparece en un software que contiene poca estructura o esta es muy pobre y demasiado complicada(enredada). La solución evidentemente es refactorizar y limpiar dicho código. Por ejemplo el uso indebido de la sentencia GOTO en muchos lenguajes.
Síntomas:
No tiene claridad y se entiende muy poco por la conexión sin sentido entre todos los componentes.
Para ver un ejemplo de aplicando estos antipatrones puedes visitar este link
En conclusión
Los anti patrones, a diferencia de los patrones, no buscan resolver una problemática en específico sino más bien resaltar las malas prácticas frecuentes y proponer una contramedida.
Se pueden encontrar en diferentes ámbitos empresariales de ingeniería de software como:
Desarrollo de software
Arquitectura de sistemas
Manejo de proyectos