Grafvision - Fotolia
La forma correcta (e incorrecta) de pensar en la refactorización de código
La refactorización de código mantiene el código limpio, nítido y eficiente, idealmente sin cambiar ninguna de sus funciones. Aprenda a refactorizar el código sin interrumpir su secuencia de implementación.
La refactorización de código no es solo un proceso de eliminación de errores. Su objetivo principal es mejorar la legibilidad y aumentar sistemáticamente el rendimiento del código de la aplicación. Y aunque la intención principal de la refactorización de código no es reducir o eliminar errores, ayuda a prevenir errores a largo plazo.
Cuándo y por qué necesito refactorizar el código
Los malos hábitos de codificación y el incumplimiento a las pautas de diseño adecuadas pueden conducir a códigos duplicados, dependencias inadecuadas entre las clases y la asignación inadecuada de responsabilidades dentro de las clases y los métodos. En lugar de prácticas deficientes que resultan en un código ineficiente y difícil de mantener, la refactorización del código lo ayuda a mantener una higiene del código buena y confiable.
Los equipos primero deben refactorizar el código de una aplicación antes de agregar nuevas características o actualizaciones al código existente, y luego deben hacer un seguimiento de la refactorización con pruebas exhaustivas. Es posible refactorizar el código después del lanzamiento de la versión, pero recuerde que solo debe refactorizar el código de trabajo después de que todas sus pruebas vuelvan a estar limpias.
Si planea lanzar una aplicación al mercado en un corto período de tiempo, no planee refactorizar el código antes del lanzamiento. Por lo general, es un proceso que lleva mucho tiempo y podría retrasar el proceso de entrega. Además, necesitaría realizar pruebas adicionales después de la refactorización para asegurarse de que no alteró la funcionalidad de la aplicación y que todavía funciona como se esperaba.
Algunas técnicas probadas para refactorizar
Existen varias estrategias diferentes para la refactorización de código. Aquí hay un vistazo a algunos enfoques frecuentes.
Refactorización rojo-verde
Los equipos que priorizan el desarrollo basado en pruebas utilizan ampliamente el enfoque rojo-verde para refactorizar el código. Este enfoque organiza todo el proceso de refactorización en tres pasos:
- Rojo: Deténgase y piense en lo que necesita desarrollar.
- Verde: Escriba el código suficiente para garantizar que las pruebas pasen.
- Refactorice: Optimice y limpie el código sin agregar nuevas funcionalidades.
Refactorizar por abstracción
Esta técnica extrae su código, lo resume y lo ayuda a evitar el código duplicado. Hay dos variaciones de esta técnica: el pull-up y el push-down. La técnica pull-up mueve el código a una superclase para evitar la duplicación, mientras que el método push-down mueve el código de la superclase a una subclase con el mismo propósito.
Métodos de composición
Los métodos que son excesivamente grandes no son fáciles de administrar, cambiar o mantener con el tiempo. Este enfoque aprovecha la extracción, incluido el método, la clase, la interfaz y las variables locales, para simplificar el código y facilitar el cambio.
Simplificando métodos y condicionales
Con el tiempo, el código crece y se vuelve más complejo. Puede simplificar la lógica de su método agregando parámetros, eliminando parámetros, renombrando métodos o simplificando condicionales reemplazándolos con polimorfismo.
Refactorización preparatoria
Esta es una técnica en la cual el desarrollador anticipa la necesidad de refactorizar el código antes de agregar una nueva característica. Al actualizar el código antes de agregar una nueva característica, este enfoque reduce la deuda técnica futura.
Mejores prácticas
La refactorización de código es un proceso continuo. No importa cuántas veces refactorice, puede que nunca esté completamente satisfecho porque la refactorización de código genera más refactorización de código. Por lo tanto, vale la pena centrarse en el progreso continuo en lugar de la llamada perfección de la aplicación.
Acepte la refactorización como una actividad de mantenimiento continuo, ya que la factorización de código está diseñada para admitir la adaptación. Es probable que el código que refactorizó una vez se vuelva obsoleto con el tiempo, y tendrá que refactorizarlo nuevamente.
Con eso en mente, hay varias prácticas fundamentales a seguir cuando refactoriza el código:
- Haga referencia a su código y asegúrese de que el código se pueda probar antes de comenzar a refactorizar. Tenga una estrategia de prueba y asegúrese de que las pruebas también tengan una buena cobertura.
- Ejecute las pruebas después de cada cambio en el código. Esto asegura que el proceso de refactorización del código no alteró ninguna funcionalidad ni introdujo nuevos errores. También es una buena práctica tener todas las pruebas requeridas disponibles antes de refactorizar el código.
- Aproveche las numerosas herramientas de refactorización de código disponibles. Por ejemplo, el IDE de Visual Studio de Microsoft contiene herramientas integradas para la refactorización de código. Puede cambiar el nombre, extraer y formatear fácilmente el código fuente dentro del IDE.
- Refactorice su código gradualmente. La refactorización debe ser un proceso paso a paso. Después de completar cada paso, pruebe el código a fondo.
- Refactorice antes de agregar nuevas funciones o antes de actualizar la aplicación.
Nota del autor: Puede leer el libro "Refactorización: Mejora del diseño de código existente" de Martin Fowler para obtener más información sobre la refactorización de código.