Refactorización

El software evoluciona con el tiempo, adaptándose a nuevos entornos, adicionando funcionalidades y corrigiendo algunos de los errores que pueda presentar. Sin embargo, muchas veces los cambios se hacen de manera rápida y, aunque logran la funcionalidad deseada, pueden afectar la estrutura interna del código.

Cuando un programa tiene una estructura interna inadecuada es más difícil hacerle cambios porque se invierte mucho tiempo entendiendo el código, se deben realizar modificaciones en varias partes, se generan errores inesperados, se extiende el tiempo de pruebas, etc. Esto puede disminuir la vida útil del programa, haciendo que tenga que ser reemplazado y generando costos adicionales para los clientes y usuarios (además de las pérdidas que deben asumir los desarrolladores).

Por lo anterior, actualmente se aplican diferentes técnicas que ayuden a conservar o mejorar la estructura del código, buscando que continúe prestando sus servicios por mucho tiempo, sin costos adicionales innecesarios. Una de estas técnicas es la REFACTORIZACIÓN (por "refactor" en inglés), también conocida como recodificación o reestructuración.

La refactorización, según la define el autor Martin Fowler, es el "Proceso de cambiar el software de tal manera que no altere su comportamiento externo pero sí mejore su estructura interna".

Las refactorizaciones son PEQUEÑOS CAMBIOS (casi sin valor por sí mismos), pero la suma de estos cambios logra transformaciones significativas. En general se busca un código más claro, conciso y elegante.

Algunas refactorizaciones son muy conocidas, como por ejemplo "Rename" (Renombrar), que consiste en cambiar el nombre de algún elemento del programa que no era muy claro por otro que explique mejor su significado. Por ejemplo, si el programa tiene una variable llamada "val" se puede cambiar ese nombre por otro más significativo como "valorCompra". Este cambio por lo general se puede hacer con herramientas de los editores de código, para que se reemplace en todas las partes donde aparece.

Otras refactorizaciones son más elaboradas, como por ejemplo, cambiar una serie de condicionales anidadas por polimorfismo.

Además de usar algunas opciones de refactorización que vienen en los entornos de desarrollo, también es posible consultar un catálogo de refactorizaciones, donde aparecen las más conocidas. Este catálogo se puede encontrar en:

Los invito a explorar algunas de estas refactorizaciones y empezar, gradualmente, a hacer cambios pequeños en el código que mejoren su estructura, y así podremos tener un software que cumpla con las expectativas de los usuarios por mucho tiempo.

Sandra Victoria Hurtado Gil, julio 2022