Feb 22

Metodologías ágiles y refactoring

Hace tiempo comenté que iba a empezar un proyecto en el trabajo, con la ambición de que fuera reutilzable en otros proyectos similares. En aquel post comentaba que como ando últimamente un poco desencantado con el diseño global desde el principio, decidí ir haciendo pequeñas iteraciones, con un pequeño diseño sólo para esa itración, codificación sólo para esa iteración y mucho refactoring en las siguientes iteraciones.

Bien, ya llevo unos meses con ello, dos meses largos.

La experiencia la verdad es que está siendo buena. Cojo un pequeño tema a implementar, me pienso un pequeño diseño para ello, hago el esqueleto, las clases de test de JUnit, entre otras personas y yo vamos rellenando código rápido y sin complicarnos la vida con generalidades hasta que funciona.

Luego cogemos otro tema, hacemos refactoring sobre lo ya hecho para aclopar el nuevo tema, más clases de JUnit y a codificar y así sucesivamente.

Las primeras iteraciones fueron un poco fustrantes. Estoy acostumbrado a tratar de hacer código general, tratando de que quede bien organizado desde el principio. El hacer código pensando sólo en lo que tengo que hacer en el momento y sin complicarlo, desde luego va más rápido, pero te queda la cosa de "esto podría estar mejor si lo hiciera más general".

Sin embargo, según vamos iterando y añadiendo funcionalidad, al hacer refactoring, las clases se van generalizando solas, el diseño bueno va surgiendo solo y además, estoy empezando a pensar que el diseño ha quedado mejor y más claro así que si hubiera pensado al principio un diseño general para todo.

Se pierde tiempo en el refactoring, pero también es cierto que al principio de cada iteración, se hace refactoring para acomodar la nueva funcionalidad y luego se implementa rápidamente. Las clases de JUnit junto con maven son además una maravilla. Cualquier metedura de pata en ese refactoring canta enseguida.

Otro detalle para pensar es ¿quién hace test de las clases de JUnit?. Al hacer el test antes que la clase, no hay forma de probar el test. En más de una ocasión hemos visto que la clase está bien implementada, pero el test inicial estaba equivocado y hemos tenido que corregirlo.

Resumiendo, a pesar de los pequeños peros, estoy encantado con esta nueva forma de trabajar. La cosa va más o menos rápida, con entregables cada poco tiempo (unos quince días) y las clases me asombra lo bien que se van organizando solas.

La pega de las entregas frecuentes, es que el reporte de bugs también te viene de muy pronto…

One Response to “Metodologías ágiles y refactoring”

  1. Diario de Programación » Blog Archive » Currito avanzado Says:

    […] Metodologías ágiles y refactoring 27 […]

Leave a Reply