21 abril 2006

Eclipse y refactoring

Hace poco leí el libro de "refactoring" de Martin Fowler. Aunque ya conocía el tema, me pareció buen libro y bastante interesante. Los primeros capítulos hablan de qué es el refactoring, por qué es bueno hacerlo, cuando hay que hacerlo, etc, etc. Son los capítulos interesantes.

El resto del libro es como un libro de recetas. Cada arreglo que queremos poder hacer en el código, por ejemplo, partir un método largo en varios pequeños, está contemplado y te cuenta en un par de páginas cual es la mejor forma de realizarlo.

Esto me animó a escribir un mini-tutorial contando qué es el refactoring y qué ventajas tiene y, sobre todo, me animó a probarlo con eclipse.

Eclipse tiene muchas opciones de refactoring. En el código del trabajo encontre dos clases similares con un método común muy grande, así que decidí hacer una clase padre, llevarme ese método a la clase padre y luego partirlo en cachos.

Una vez creada la clase padre y puesto los extends en los hijos, seleccione en uno de ellos el nombre del método largo. Di al botón derecho del ratón para sacar el menú, "refactoring", "pull-up". Eclipse detectó que había otro hijo con un método del mismo nombre y me preguntó si quería borrar ese método de ahí. Conteste que sí y ¡voila!, eclipse hizo todo el trabajo. Desapareció el método de las clases hijas y apareció en la clase padre.

Luego empecé a partir el método en partes más pequeñas. Seleccioné un trozo de código de ese método que tenía sentido como método separado, botón derecho del ratón, "refactor", "extract method" y listo, eclipse lo hace sólo. Pregunta el nombre del método, pone automáticamente los parámetros necesarios, reemplaza el código por la llamada y todo funciona correctamente.

En cuatro click de ratón tenía el método grande partido en cuatro métodos pequeños.

Pude comprobar que uno de los parámetros del método grande no se usaba, así que a rehacer código de nuevo. Seleccioné el nombre del método, botón derecho de ratón, "refactor", "change method signature" y me sale una ventana con todas las cosas del método (tipo devuelto, nombre y parámetros). Selecciono el parámetro inútil, le doy borrar y ya está. Eclipse se encarga de corregir el código y de corregir en todas las llamadas a ese método para quitar el parámetro sobrante.

En fin, una pequeña maravilla de la herramienta que permite arreglar el código en dos patadas y con seguridad.

No hay comentarios: