h1

Refactoring de código en Java: RefactorIT

05/15/2008

Wizdoc [Icon By Buuf]

 Tips & Tricks

Un repaso: Qué es el Refactoring

Como parte de las buenas prácticas de desarrollo de software existe un concepto denominado Refactoring — traducción al español: refactorización, aunque casi no se usa éste último. Martin Fowler, creador de dicho concepto nos lo explica:

Refactoring es una disciplina técnica para la reestructuración de un cuerpo existente de código, alterando su estructura interna sin modificar su comportamiento externo. Su enfoque se basa en una serie de pequeñas transformaciones, preservando el comportamiento. Cada transformación (llamado un "refactoring") contribuye en poco, pero una secuencia de transformaciones puede producir una reestructuración significativa. Dado que cada refactoring es pequeño, es menos probable que salga mal. El sistema también se mantiene trabajando al 100% después de cada refactoring, lo que reduce las posibilidades de que un sistema pueda llegar a "romperse" durante la reestructuración.

— Martin Fowler, What is Refactoring?

Muchos programadores también lo conocen como "limpieza de código" pues puntualmente de eso se trata: impedir que las soluciones que codificamos en el día a día para implementar una funcionalidad degeneren en un "batidillo". Esto lo logramos al darle al código una mejor apariencia así como una mejor estructura.

Pues bien, la cantidad de refactoring que debemos realizar en nuestro código es directamente proporcional al nivel de experiencia y conocimientos con los que contamos, y muchas veces verificar que un programa se haya desarrollado correctamente o que necesite una cierta cantidad de refactoring es difícil a menos que tengamos muchos años en esta industria; adicionalmente si estamos validando los componentes que pertenecen a un proyecto mediano o grande (75 clases o más) esto puede representar una gran dificultad. Otro problema se presenta si estamos trabajando bajo un esquema de desarrollo incremental porque tendremos que "validar" la estructura de nuestros programas más de una vez, debido al ciclo iterativo de desarrollo.

Haciéndonos la vida más fácil: Eclipse, sus plugins y RefactorIT

Para desarrollar software en Java existen una gran variedad de IDEs (Integrated Development Environment — Ambiente de Desarrollo Integral) pero para este caso nos enfocaremos en Eclipse. Este IDE tiene la ventaja de que es independiente del lenguaje con el que estamos desarrollando (es decir, así como podemos programar en Java con el Eclipse, también podemos crear proyectos en C, C++ o cualquier otro lenguaje), así como que podemos descargarlo libremente y sin costo.

Otra gran ventaja del Eclipse sobre su competencia son la multitud de plugins que podemos encontrar (aquí y aquí se encuentran los sitios de descarga de plugins más importantes al respecto). Dichos plugins nos permiten añadir funcionalidad al Eclipse, incluyendo características como poder editar esquemas de base de datos, colorear la sintaxis de nuestros programas, hasta desarrollar web services mediante wizards especializados.

Pues bien, uno de los plugins más útiles en existencia es RefactorIT de Aqris Software (hoy convertido en un proyecto opensource): un plugin que nos permite auditar el código que hemos implementado mostrándonos cuáles son las debilidades de nuestro proyecto y cómo podemos corregirlas:


[Click en imagen para ver en tamaño original]


Con un click y una selección para configurar qué tipos de debilidades debe buscar el RefactorIT en nuestro código podemos obtener los puntos donde hay que corregir "áreas de oportunidad". En la imagen se muestra un error bastante común: Comparar dos cadenas mediante el operador "==" en lugar de utilizar el método String.equals("").

Esta funcionalidad es ya algo indispensable en los proyectos de software actuales, donde pueden crearse cientos de componentes por decenas de desarrolladores y que deben ser auditados para comprobar su correcta implementación. Aunque RefactorIT tiene algunas otras monerías (como medición de métricas o refactorings automáticos), el hecho de que es freeware y que lo podemos descargar como un plugin del Eclipse o como un programa standalone, le dan un gran valor al entrar a la fase de construcción en nuestros proyectos, especialmente porque no implica un costo adicional al cliente y tiene una baja curva de aprendizaje.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: