domingo, 30 de marzo de 2008

Calidad del código

Una de las medidas de la calidad de una aplicación es la calidad de su código. Muchas veces éste es un aspecto que se olvida porque no parece tan importante como la funcionalidad o la eficiencia. Puede que sea así, pero también es cierto que un código de calidad ayudará a conseguir esos otros factores clave.

No es habitual aplicar reglas de calidad del código durante la fase de desarrollo de un proyecto, pero creo que sería una buena medida para garantizar un resultado final satisfactorio. Al igual que se asume desarrollar test unitarios para validar la funcionalidad de los módulos terminados, se podría asumir la ejecución de herramientas automáticas que revisaran la corrección del código. De esta forma se podrían detectar y corregir antes los posibles errores y evitar llegar a situaciones donde el volumen de código a revisar y corregir sea tan elevado que no valga la pena ni intentar arreglarlo.

Herramientas de análisis

PMD

Es una herramienta que analiza código Java y se basa en reglas para detectar posibles errores. Entre ellos encontramos:
  • Incumplimiento de estándares de códificación
  • Bloques vacíos (try/cath/finally, switch, if,...)
  • Código no usado
  • Duplicación o importación inecesaria de paquetes
  • Problemas con el tamaño del código
  • Optimizaciones
  • Complejidad ciclomática (CCN)
Además, gracias al componente CPD (Copy paste Detector), podemos detectar patrones de código repetido.

Hammurapi

Otra herramienta muy útil para la revisión de código. Usa una base de reglas extensible para analizar el código. Los resultados obtenidos por esta herramienta son más comprensibles que los de PMD porque agrupa la información por niveles de severidad.

También obtiene métricas del código.

Métricas

Una forma rápida y fácil de hacer una primera valoración de la calidad de un código es obteniendo métricas. Buenos indicadores de la calidad son:
  • Número de línes de código de un método
  • Número de métodos de una clase
  • Número de parámetros de un método
  • Profundidad del árbol de herencia
  • Acomplamiento intra y inter packages
Estas herramientas se pueden integrar fácilmente con los entornos de desarrollo (Eclipse) y las herramientas de control (Maven), por lo que aplicarlas durante el desarrollo tiene poco coste. Hacer que los equipos de desarrollo utilicen estos automátismos para controlar la calidad del código que producen, contribuye positivamente al éxito del proyecto.


No hay comentarios: