Introducción a los antipatrones

Los antipatrones son exactamente lo contrario de los patrones. Recuerde que los patrones de diseño son ejemplos de buenas prácticas de programación, es decir, patrones para resolver ciertos problemas. Pero los antipatrones son todo lo contrario, es decir, patrones de errores que se cometen al resolver varios problemas.

Parte de una buena práctica de programación es precisamente evitar los antipatrones. No piense que se trata de una basura teórica tan incomprensible: estos son problemas específicos que casi todos los desarrolladores han encontrado. ¡Quién es consciente, está armado!

Veamos algunos antipatrones que son comunes entre los principiantes:

  • Números mágicos y cadenas
  • clase de dios
  • Optimización prematura
  • la invencion de la bicicleta
  • invención del monociclo

Números mágicos y cadenas

Un número mágico es una constante utilizada en el código para algo (la mayoría de las veces identificación de datos), cuyo número en sí mismo no tiene ningún sentido sin un comentario correspondiente. Los números no tienen absolutamente ninguna semántica.

Cuando comienzan a aparecer números en el código de su proyecto, cuyo significado no es obvio, esto es muy malo. Un programador que no sea el autor de dicho código tendrá dificultades para explicar cómo funciona. Con el tiempo, incluso el autor del código con números mágicos no podrá explicarlo.

Los números hacen que el código sea difícil de entender y refactorizar. Las principales razones de este error son la prisa en el desarrollo y la falta de práctica de programación. Este antipatrón debe cortarse de raíz estipulando el uso de constantes numéricas antes de comenzar el desarrollo.

Para resolver este problema, debe crear una variable cuyo nombre explique el propósito de la constante numérica y asignarle el valor deseado.

clase de dios

El objeto divino es un antipatrón bastante común entre los desarrolladores de programación orientada a objetos. Tal objeto asume demasiadas funciones y/o almacena casi todos los datos. Como resultado, tenemos un código no portátil que, además, es difícil de entender.

Además, dicho código es bastante difícil de mantener, dado que todo el sistema depende casi exclusivamente de él. Motivos de este error: incompetencia del desarrollador, un desarrollador que asume una gran parte del trabajo (especialmente cuando la cantidad de trabajo excede el nivel de experiencia de ese desarrollador).

Es necesario lidiar con este enfoque dividiendo las tareas en subtareas que puedan manejar diferentes desarrolladores.

Optimización prematura

La optimización prematura es la optimización que se realiza antes de que el programador tenga toda la información necesaria para tomar decisiones informadas sobre dónde y cómo hacerlo.

En la práctica, es difícil predecir dónde se producirá un cuello de botella. Los intentos de optimizar antes de obtener resultados empíricos llevarán a la complejidad del código y la aparición de errores, pero no traerán ningún beneficio.

¿Como evitar? En primer lugar, escriba un código limpio, legible y que funcione utilizando algoritmos y herramientas conocidos y comprobados. Si es necesario, utilice herramientas de creación de perfiles para encontrar cuellos de botella. Confíe en las mediciones, no en conjeturas ni suposiciones.

Ejemplos y características

Almacenamiento en caché antes de la creación de perfiles. Usar heurísticas complejas y no probadas en lugar de algoritmos matemáticamente correctos. Una selección de nuevos marcos no probados que pueden comportarse mal bajo carga.

cual es la dificultad

No es fácil determinar cuándo la optimización es prematura. Es importante dejar espacio para el crecimiento de antemano. Debe elegir soluciones y plataformas que le permitan optimizar y crecer fácilmente. También, a veces, la optimización prematura se usa como excusa para un código incorrecto. Por ejemplo, toman un algoritmo O(n2) solo porque el algoritmo sería O(n) más difícil.

la invencion de la bicicleta

El significado de este antipatrón es que el programador desarrolla su propia solución a un problema para el cual ya existen soluciones y, a menudo, otras mucho más exitosas.

El desarrollador se considera más inteligente, por lo que intenta encontrar su propia solución para cada tarea, a pesar de la experiencia de sus predecesores. La mayoría de las veces, esto solo conduce a una pérdida de tiempo y una disminución en la eficiencia del programador. Después de todo, es probable que la solución sea subóptima, si es que se encuentra.

Por supuesto, no se puede descartar por completo la posibilidad de una solución independiente, ya que esto conducirá a la programación de copiar y pegar de forma directa. El desarrollador debe navegar por las tareas que pueden aparecer ante él para resolverlas de manera competente, utilizando soluciones preparadas o inventando las suyas propias.

Muy a menudo, la razón de este antipatrón es la simple falta de tiempo. Y el tiempo es dinero.

Invención de la bicicleta de rueda cuadrada

Este antipatrón está muy relacionado con simplemente reinventar la rueda: crear su propia mala solución cuando existe una solución mejor.

Este antipatrón lleva el doble de tiempo: primero, se dedica tiempo a inventar e implementar su propia solución, y luego a refactorizarla o reemplazarla.

El programador debe ser consciente de la existencia de varias soluciones para ciertos rangos de tareas, guiarse por sus ventajas y desventajas.

Todos los problemas a los que te enfrentarás como programador se pueden dividir en dos partes:

  • personas inteligentes resolvieron este problema hace 30 años
  • gente inteligente resolvió este problema hace 50 años

La mayoría de los problemas de programación se han resuelto con éxito incluso antes de que nacieras . No es necesario inventar nada, solo estudie la experiencia de otras personas (para eso se escriben los libros).

En 2022, podremos celebrar los siguientes cumpleaños:

  • Lenguajes de programación
    • El lenguaje C cumple 50 años (1972)
    • El lenguaje Java cumplió 27 años (1995)
    • Python cumple 31 años (1991)
  • Conexión
    • Internet cumplió 39 años (1983)
    • El móvil cumplió 49 años (1973)
    • El primer SMS se envió hace 30 años (1992)
  • Patrones
    • El patrón MVC cumplió 44 años (1978)
    • SQL se inventó hace 48 años (1974)
    • Java Beans se inventaron hace 26 años (1996)
  • bibliotecas
    • Hibernate se inventó hace 21 años (2001)
    • La primavera se inventó hace 20 años (2002)
    • Tomcat lanzado hace 23 años (1999)
  • sistema operativo
    • Unix fue lanzado hace 51 años (1971)
    • Windows vio la luz hace 37 años (1985)
    • Mac OS lanzado hace 21 años (2001)

Y todas estas cosas no solo se inventaron, se desarrollaron como soluciones a problemas que eran muy comunes y relevantes en ese momento.