Antipatrones

La mejor forma de hacer un pésimo sistema de software.

http://sg.com.mx/content/view/325

Antipatrones

Son ejemplos bien documentados de malas soluciones para problemas.

Se estudian a fin de poderlos evitar.

Patrón, acuñado en arquitectura de software, define las buenas prácticas de programación.

Un sistema “bien hecho” está lleno de patrones,

y debería carecer de anti-patrones;

 

Antipatrones

Los anti-patrones en arquitectura de software, son similares a sus análogos sociales, soluciones negativas, acciones que presentan mayores problemas que soluciones. Sin embargo, representan un camino fácil y rápido

Antipatrones - Catálogo

Así como los patrones son recetas probadas y ampliamente utilizadas, los antipatrones también son tristemente bien conocidos

Veamos algunos de los antipatrones más comunes.

Antipatrones - Lava Flow

Definición

Se construye mucho software de forma caótica y poco clara.

El software desarrollado se "solidifica" lo que hace que cada vez sea más difícil corregirlo

Antipatrones - Lava Flow

Explicación

Fragmentos de código que no están muy claro si cumple alguna función o no. Por tanto, aunque estemos casi seguros de que son prescindibles no nos atrevemos a eliminarlos por miedo a introducir bugs o romper la aplicación.

  • Código mal estructurado
  • Código mal documentado
  • Clases y métodos demasiado extensos
  • Módulos muy dependientes

Antipatrones - Lava Flow

Síntomas

  • Variables y fragmentos de código injustificados,frecuentemente.
  • Trozos de código o clases que no se sabe de forma clara qué hacen y sin explicación ni documentación.

 

Antipatrones - Lava Flow

Solución

  • Una manera de evitar el lava Flow es seguir un desarrollo estructurado y documentado.
  • Cuando el código está en continuo cambio es necesario quitar las partes desactualizadas para evitar código muerto.
  • SCV -> realizar commits frecuentes comentando la finalidad del código añadido en cada iteración.
  • Imprescindible refactorización de clases y métodos.

 

Antipatrones - Lava Flow

Causas típicas

  • Un código puesto en producción con prisas sin que pudiera ser verificado ni documentado.

  • Falta de arquitectura o un desarrollo.

  • Un solo desarrollador (lone wolf) escribiendo el código. Falta de conocimientos, etc.

  • Implementación de muchos métodos de prueba para añadir una funcionalidad al sistema.

 

Antipatrones - Lava Flow

Ejemplo

Text

Antipatrones - The God

Definición

Un único programa que lo controla todo,

en un fichero con miles de líneas que se acumulan.

El código por tanto está desorganizado y es muy dependiente.

http://programacionsolida.com.ar/2012/07/the-blob.html

Bubu Dragon Ball

Antipatrones - The God

Síntoma

  • Una clase monopoliza el proceso.
  • Una clase compleja rodeada por simples clases de datos.
  • La mayoría de las responsabilidades están ubicadas en una única clase.
  • Rompe con el principio de Single Responsibility, una clase -> una función definida.
  • Ausencia de OO.

Antipatrones - The God

Consecuencias

  • Las modificaciones del sistema tiene un gran impacto sobre los otros objetos.
  • Es ineficiente a la hora de probarla y reusarla.
  • Utiliza excesivos recursos y la carga en memoria es costosa.

Antipatrones - The God

Solución

  • Cumplir con la separación modular de la OO.
  • Fragmentar ese "main" o clase principal en otras más pequeñas y de funcionalidad bien definida.
  • Eliminar dependencias innecesarias.

Antipatrones - Golden Hammer

Definición

Se trata de empeñarse en aplicar la misma tecnología para solucionar todos los problemas aunque el contexto no sea el adecuado.

"Cuando se posee un martillo de oro, todo parece un clavo."

Antipatrones - Golden Hammer

Síntomas

  • Herramientas y productos idénticos son usados en una amplia gama de productos diferentes.
  • Se ha invertido mucho tiempo y recursos (coste) en conocer un producto, desconociendo otros.
  • No actualización de los profesionales.

Antipatrones - Golden Hammer

Solución

  • Esfuerzo por mantenerse actualizado.
  • Realizar un estudio de alternativas tecnologías antes de acometer una tarea.
  • No cerrarse en banda y obcecarse con un determinado producto (por maravilloso que pueda parecer).

No existe el producto perfecto en todas las circunstancias.

Antipatrones - Spaghetti Code

Definición

Es una expresión para referirse de forma negativa a un código escrito de manera confusa y retorcida.

También es frecuente cuando se mezclan distintos lenguajes en un mismo fichero como por ejemplo PHP + JS + CSS + HTML

Antipatrones - Spaghetti Code

Síntomas

  • Código ininteligible
  • Muy extenso
  • Muchas estructuras condicionales/control anidadas
  • Muchas dependencias

Antipatrones - Spaghetti Code

Solución

  • Programar pensando en los compañeros que tengan que modificar el código en el futuro.
  • Refactorizar
    • No escribir métodos extensos
    • Evitar excesivo anidamiento
    • Dependencias cíclicas

Antipatrones - Fantasmas

Definición

Cuando aparece código, clases, tablas con un propósito mínimo o incluso inútil

En ocasiones... se produce para disimular el antipatrón God

Es similar al Lava Flow

Antipatrones - Reinventar la rueda

Definición

Programar código o componentes para los que ya existe solución.

No se aprovechan herramientas ya probadas y además no reutiliza código.

Antipatrones - Reinventar la rueda

Síntomas

  • Exceso de soberbia.
  • No querer aprovechar estándares: crear su propio logging, su ORM, etc.
  • Falta de conocimiento.
  • No mantenerse actualizado.

Solución

  • Mantenerse actualizado.
  • Estar abierto al debate de posibles alternativas.

Antipatrones - Casarse con el diablo

Definición

  • Se produce al crear una dependencia de un software de terceros del que es difícil librarse.

Síntomas

  • Apostar por una tecnología propietaria no siendo la mejor disponible en el mercado.

Solución

  • Estudiar posibles alternativas.

Antipatrones - Stovepipe

Definición

  • Sucede cuando distintos grupos desarrollan por su cuenta duplicando funcionalidades y por tanto deriva en no reutilizar, más coste y nula interoperabilidad

Síntomas

  • Desarrolladores aislados

Solución

  • Utilizar metodologías ágiles

Antipatrones - Project Miss-management

Definición

Un jefe o líder que no coordina bien, lo que lleva a una mala gestión.

No se controla el proyecto y acaba mal o con retrasos.

Antipatrones - Corncob

Definición

El factor humano. Compañeros que obstaculizan o dificultan el proyecto.

Antipatrones

By eugenia_perez

Antipatrones

  • 1,440