A la hora de desarrollar aplicaciones Java es
interesante disponer de un conjunto de herramientas
para ayudarnos a no cometer equivocaciones
básicas.
He probado la herramienta FindBugs y me he quedado
impresionado por su sencillez y aparente potencia.
Vamos a ver, sobre uno de los
códigos de uno de nuestros recientes tutoriales,
cómo nos puede ayudar a anticipar errores.
Podemos ir al Web del producto y
conseguir el zip con los binarios http://findbugs.sourceforge.net/
Arrancamos el producto
Una vez descomprimido, solo tenemos que arrancar el
fichero por lotes (en entorno Windows)
Configuramos el proyecto
Pulsado el botón, encontramos el resumen y lo
dice todo:
Vemos la porción de código
que se ve afectada
Identificación del error
La descripción del error es bastante buena,
incluida la proposición del arreglo. Básicamente
nos esta comentando que tenemos un bloque de código que,
en caso de producirse una excepción dejaría un
Stream abierto y nos propone que incluyamos un bloque finally,
para evitarlo.
Vemos el detalle del código afectado:
// esta función recupera el texto de la página String { try { String respuesta = ""; BufferedReader in = new BufferedReader (new String cadena = ""; while (cadena != null) { cadena = in.readLine(); if (cadena != null) { respuesta+=("n" + cadena); } } return respuesta; } catch(Exception e) { return "Error " + e.getMessage() + } } |
Podemos codificar el cambio
propuesto y comprobar que se soluciona el problema…
// esta función recupera el texto de la String { BufferedReader in = null; try { String respuesta = ""; in = new BufferedReader (new String cadena = ""; while (cadena != null) { cadena = in.readLine(); if (cadena != null) { respuesta+=("n" + cadena); } } return respuesta; } catch(Exception e) { return "Error " + e.getMessage() + } finally { if(in != null) { try { in.close(); } catch (Exception } } } |
Conclusiones
Los jefes de proyecto tenemos
habitualmente un problema crítico y consiste en que las
posibles variables que
nos pueden dar juego, las
tenemos ya definidas:
- Duración: Ya se ha negociado la fecha
limite - Alcance: Se han negociado los
requisitos - Coste: El presupuesto
esta acotado - Calidad: La calidad la
define la metodología (en el mejor de los
casos)
Entonces, bajo esta coyuntura, solo podemos jugar con la
productividad:
- Sistematización: Disponer de plantillas
y procedimientos
que nos guíen en los procesos
(valoración rápida, análisis, diseño, construcción, etc.) - Reutilización: No reinventar la rueda y
reaprovechar lo ya construido. - Automatización: Capacidad de evitar
labores mecánicas (pruebas,
documentación, compilación,
empaquetamiento, etc.) - Anticipación de errores:
Utilización de herramientas que nos ayuden a analizar
nuestro código sin ejecutar las pruebas
Esta herramienta, FindBugs, puede ayudarnos parcialmente
a mejorar nuestro trabajo aunque
debemos combinarla con otras y buenas prácticas y
plantillas.
El día a día probablemente nos impida
elevarnos al problema y optimizar nuestra productividad. Es
posible que necesitemos gente no contaminada de nuestra realidad
para ayudarnos a mejorar….. Para eso es posible que me
podáis contratar ….
Roberto Canales Mora
www.adictosaltrabajo.com