Antipatrones
La mejor forma de hacer un pésimo sistema de software.
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