En el mundo de los desarrolladores, a menudo se escucha: «Necesito un año para refactorizar» (seis meses, un mes, una semana, al menos un día). ¿Qué significa esto y por qué es necesario? Vamos a averiguarlo.
Este concepto está directamente relacionado con la deuda técnica, léelo aquí.
Usando un Café como Ejemplo
Imagina la siguiente situación: abriste un café, construiste una cocina genial y contrataste un chef. Cuando el café recién se lanzó, el menú solo tenía platos simples que se podían calentar en el microondas. Compraron un microondas y lo colocaron en la cocina. Al lado colocaron una estantería para todo lo necesario.
Dos meses después, el negocio prosperó y decidimos agregar repostería al menú. Compramos un horno, tiramos cables, agregamos un mostrador con bandejas al lado. El espacio en la cocina se redujo, el chef tiene que pisar los cables y rodear el mostrador todo el tiempo, pero se puede trabajar.
Otro mes después instalaron una freidora y una batidora para la masa. También les tiraron cables, agregaron armarios para utensilios al lado y contrataron un segundo chef. Como resultado, la cocina está en completo desorden, todo se interpone en el camino y es incómodo preparar la comida. Si quisiéramos agregar una nueva estufa, sería difícil: no hay espacio, aunque en términos de área, podemos colocar al menos dos de esas estufas.
En este punto, llega un diseñador de cocinas y lo dibuja todo de nuevo: dónde debe ir qué.
Una semana después, la cocina es diferente: el equipo está colocado de manera que no moleste a los chefs, los cables están ocultos en las cajas y los mostradores con el equipo no bloquean la salida. Al mismo tiempo, el menú del café no ha cambiado: los visitantes ni siquiera saben que algo ha estado sucediendo en la cocina, porque optimizamos los procesos, no el menú. Este es el refactoring: cuando cambias algo por dentro de manera que no es visible por fuera, pero te hace más fácil seguir trabajando.
En la programación, refactorear el código es un cambio en el código que no afecta su funcionalidad, pero mejora su legibilidad y mantenimiento futuro.
Cuándo Necesitas Refactorizar en la Programación
Hay dos enfoques para el refactoring: planificado y según sea necesario.
- El refactoring planificado significa que los desarrolladores incluyen tiempo para el refactoring en el ciclo de desarrollo. Por ejemplo, cada cuatro sprints o cada seis meses.
En las grandes empresas, donde hay mucho código heredado, puede haber equipos enteros que solo se dediquen a refactorizar las cosas antiguas. Esto ayuda a los demás equipos a comprender más rápidamente qué está sucediendo en él y cómo usarlo.
- El segundo enfoque es el refactoring según sea necesario, cuando la adición de nuevas funciones se ve obstaculizada por la dificultad de integrarlas en el código antiguo. Entonces decimos «Detengan la máquina» y dedicamos un tiempo a reorganizar todo lo que había.
Qué se Considera al Refactorizar el Código
El principal indicador del refactoring exitoso es que después de él, el código se vuelve más limpio, simple y fácil de entender.
Por ejemplo, si la variable Z
en el programa es responsable del número de compradores, es mejor reemplazarla con customerCount
, lo que hará que sea más fácil entender el código y comprender qué está sucediendo.
Si un fragmento de código se repite más de una vez, generalmente se extrae en una función o método separado. En este caso, será más fácil reemplazar el código en un solo lugar que buscar fragmentos repetidos en todo el programa.
Los programadores también prestan atención al tamaño de las funciones, los métodos y las clases. Si una función resulta demasiado grande para caber en una sola pantalla, se divide en dos para simplificar la legibilidad del código.
A veces, para simplificar el código, los desarrolladores extraen parte de las funciones en un archivo separado y lo conectan al programa principal.
Refactoring no es optimización de código. Al refactorizar, la tarea del programador es hacer que el código sea más comprensible, y al optimizar, hacerlo más rápido y eficiente.
¿Es Posible Vivir Sin Refactoring?
Puedes vivir sin refactoring, pero cuanto más tiempo pase sin él, más difícil será trabajar. El refactoring es como poner orden en tu lugar de trabajo. Si no lo haces durante mucho tiempo, con el tiempo se vuelve incómodo trabajar. El refactoring regular ayuda a evitar que el desarrollo posterior se ralentice en equipos grandes.
Solo puedes vivir sin refactoring en productos pequeños que se desarrollan lentamente.
Qué Sigue
En el siguiente artículo, intentaremos aplicar este conocimiento en la práctica y refactorizar uno de nuestros proyectos antiguos para ver cómo cambia el código y qué obtenemos al final.