Buscar este blog

domingo, 17 de junio de 2012

La importancia de la refactorización

       Últimamente he estado pensando en que, cuando se va a usar TDD, se recalca mucho la importancia que tiene en esta forma de trabajo la refactorización del código generado inicialmente, pues en TDD la refactorización es un paso fundamental para conseguir un código limpio y bien estructurado. Pero, lo que realmente me ha hecho pensar es, ¿no se debería hacer el mismo hincapié en la refactorización aunque no se trabaje con TDD?
      La importancia de la refactorización cuando utilizamos otras metodologías no es tan obvia pero, ¿a quien no le ha pasado que revisando su propio código algún tiempo después de haberlo hecho se ha dado cuenta de que lo podía haber hecho más eficiente, de que podría haber agrupado alguna tarea en otro método, o incluso, sobre todo cuando varias personas trabajan en el mismo proyecto, se ha encontrado código repetido? Si alguien me dice que no le ha pasado nunca, lo siento, pero una de dos, o es mentira, o es que nunca ha revisado un código que ha hecho.
   Y sinceramente creo que todos, cuando realizamos una tarea, hacemos cierto nivel de refactorización cuando avanzamos con el desarrollo, cuando releemos lo hecho, cuando realizamos las pruebas. Pero lo que no es tan habitual es conscientemente, al finalizar una tarea, dedicar aunque solo sea una pequeña cantidad de tiempo a revisar el código realizado que ya sabemos que funciona, que ya sabemos que cumple las especificaciones que buscábamos, simplemente para ver si podemos hacer algo más eficiente, o podemos organizar mejor el código, o incluso si podemos documentarlo mejor.
   El tiempo empleado en algo así no tiene que llevarnos más de 5-10 minutos, y realmente minimizaría la cantidad de cosas que, pasado un tiempo, vemos que podríamos haber hecho mejor (obviamente, no desaparecerían, pero sería un paso). No sería raro que revisando una tarea de 8 horas viéramos que nuestras primeras líneas de código son mejorables, o que si se documenta mejor o se le da un mejor nombre a un nuevo método que hemos realizado el resto del equipo podrá detectarlo más fácilmente y así evitar duplicidad de código.
   En conclusión, creo que sería una buena idea para todo desarrollador ponerse como norma propia dedicar un pequeño tiempo al finalizar una tarea para llevar a cabo esta refactorización, pues los beneficios que se consiguen son tremendamente superiores al tiempo que se emplea (o, quizá según algunos, al tiempo "que se pierde").