La refactorización de código en términos sucintos es la
limpieza de código desechando lineas de comando que ya no son útiles....
¿y ya?, ¿no hay más? Bueno si fuera así
de sencillo no lo escribo como post en este blog sin embargo en esencia esto
mismo.
En principio es esto mismo,
Al refactorizar, reordenamos código, cambiando su comportamiento interno
sin cambiar su respuestas al exterior o su comportamiento externo. Y este tema
se conecta muy bien con las pruebas unitarias (Unit Test) y el desarrollo
guiado por pruebas (TDD), pues es la piedra angular de estas dos metodologías.
Los desarrolladores realizamos refactorización en nuestro código de manera casi
intuitiva sin darnos cuenta y sin saber que es una forma de hacer mantenimiento
al código y hacerlo más leíble, a posible colaboradores. Esto le da un toque de
mantenibilidad al código puesto que será por definición un código reusable para
futuros proyectos, puede que ser modificado con mayor facilidad, le da
capacidad sencillez en su ejecución y lectura.
Cuando buscamos que el código funcione mas óptimamente, realizamos sentencias que generen un gasto de memoria o que se adecuen más al framework que usamos. También si cambiamos esas sentencias if con múltiples else if por el uso del swich para evaluar múltiples casos.
En síntesis
la refactorización posee estas cuatro meta que explica a groso modo el fin de
esta práctica:
- Mejorar la facilidad de comprensión del código
- Eliminar código muerto
- Facilitar el mantenimiento en el futuro
- Cambiar su estructura y diseño sin modificar su resultado
Aspectos basicos:
Refactorizar es limpiar el codigo.Pero no es solo eso, se ve mejor cuando hacemos por ejemplo un cambio de nombre de variable por algo más verboso o comprensible, cuando quitamos código duplicado, cuando quitamos documentación errónea; En ese momento está usando la refactorizacion
La Refactorización no es Reescribir código:
Son ambas son parecidas y se tocan un poco pero no suenan ni hacen lo mismo. Cuando reescribimos código, replanteamos la idea original cambiando incluso los objetivos finales, Eso no es refactorización, pues la meta de la refactorización es no cambiar el comportamiento externo. Si una función da tomates enlatados, seguirá dando tomates enlatados.
Es un proceso continuo sin ser una tarea específica:
Es un proceso que debe ser hábito del desarrollador. No importa si cuando hiciste la función o clase usaste hasta magia arcana para que funcione. Tus principios como como buen programador deberían dictarte que releas eso para hacerle mejoras y basado en los dos aspectos anteriores, reautorices . Como equipo no puedes tomar la decisión de tomar todo un sprin o iteración dedicada a refactorizar código porque sería perder el tiempo, mejor hazlo antes de hacer merge request.
La refactorización no añade ni elimina funcionalidades:
Esto es curioso, la mayoría de los desarrolladores jurarían que lo hace pero la teoría dice que no. Es el caso de que la refactorización no añade codigo pero si codigo inútil. No añade ni remueve funcionalidad que aumente la productividad el proyecto pero si aquellas que no están en uso o no tienen meta dentro
Origen Matemático
Recuerdan que cuando estudiaron en materias como física o matemáticas,
realizábamos un proceso en el cual tomábamos un polinomio y lo sintetizábamos a
una expresión más atómica como por ejemplo:
(X-1) * (X+1) que al
factorizar quedaba -----> (X^2 - 1)
Pues la refactorización hace en el código exactamente lo
mismo. Cuando escribimos nuestro programa solemos utilizar sentencias muy
largas y poco eficientes para dar el resultado esperado. Sin embargo en la refactorización
hacemos más "elegante " y eficiente dicho código, acortando el
procedimiento e incluso cambiando su diseño interno.
Paso a Post Depuración:
Al realizar refactorización verificamos que el procedimiento
y proceso interno del programa sea mejor y más leíble. Pero esto se conecta
perfectamente con las pruebas unitarias en las cuales la refactorización forma
parte cuando queremos reorganizar nuestro código, debido a que una prueba no
resulto exitosa o en caso de que sepamos que se realizaran pruebas al código. En
ambos caso el comportamiento interno cambiara pero no siempre el externo. También
ocurre que en ocasiones al colaborar en los proyectos y/o programas de otras personas encontremos inconsistencias
en ellos. la refactorización entonces sería el hecho de cambiarlo para hacerlo más
ordenado,
No obstante puede ser tomada como limpieza de código pues
muchas veces al releer una clase, por ejemplo, podemos encontrar líneas de código
muerto o comentado que ya no tendrán ninguna validez. Para los casos en los
cuales las sentencias del codigo cambie es el caso de python 2 al 3 o C#.net 2.0
al 3.5 o PHP con las conexiones a mysql, algunas sentencias cambian en el
lenguaje como tal, sin embargo sigue coexistiendo ambas en versiones superiores
con la recomendación de ser modificadas en el futuro. Es cuando nosotros
cambiamos esas sentencias o funciones del lenguajes por las mas actuales al
lenguaje para que este tenga aun vigencia en el tiempo.
No hay comentarios:
Publicar un comentario