Una de las cosas que más usamos en la programación diaria, es el debugger, que nos permite encontrar dónde están los errores en el código. Cuando tenemos estructuras de datos complejas, y queremos navegar por ejemplo por una lista de ellas, la información del debug se nos muestra en forma de árbol, en el cual hay que ir desplegando las distintas ramas. Esto cuando vamos con prisa, al final resulta muy tedioso.
Hoy vamos a ver una funcionalidad de Netbeans, que nos puede ahorrar mucho tiempo, aunque en principio pueda parecer una cosa trivial, en el día a día, resulta muy útil. Os presento el formateo de variables para el debugger de Netbeans.
Vamos a exponer un ejemplo muy sencillo, que nos muestre la funcionalidad, sin que nos perdamos en complejidades de código, por lo cual lo mejor es elegir una sencilla aplicación java en formato línea de comandos.
El código del ejemplo
Vamos a tener dos clases: por un lado la clase AplicacionJavaFormateoVariables.java y donde almacenaremos los datos DatosBean.java, que no será más que una clase con dos propiedades y sus correspondientes métodos Getters y Setters:
Definiendo el punto de ruptura
Para el ejemplo, pondremos un punto de ruptura en el fichero AplicaciónJavaFormateoVariables.java en su línea 13, que corresponde a una línea con un System.out.println, que no sirve para nada más que eso, como sitio donde poner el punto ruptura, ya que a esa altura ya estará rellena la lista, que es la que vamos a usar para ver esta funcionalidad.
Arrancando la aplicación
Si nos situamos en la ventana de proyectos, y sobre el nombre de la aplicación pulsamos el botón derecho, podremos arrancarla en modo debug. Hagámoslo y veamos que ocurre:
Al arrancar la aplicación, en modo debug, se parará en el punto de ruptura que previamente le habíamos definido, y si vamos a la pestaña de variables veremos lo siguiente:
Observando lo que nos pone, vemos que para obtener el valor que nos interesa, tenemos que abrir uno a uno los elementos de la lista, ya que el campo value "#83", no es que nos aclare mucho. En nuestro ejemplo, el Bean sólo tiene dos propiedades, pero imagina un Bean más real lleno de propiedades a las que queremos acceder.
Personalizando la salida de las variables en el debug
Lo que vamos a hacer es personalizar esta salida en la ventana de variables, para que nos muestre lo que queremos de una forma más rápida, y sólo lo que nos interese en un momento dado.
Para ello nos vamos a ir a Tools > Options > Java (pestaña) > Java Debugger (pestaña), lo cual nos mostrará la siguiente pantalla:
Una vez en esta pantalla, pulsaremos en "Variable formatters" (tal y como se muestra en la anterior imagen), y después sobre el botón "Add...", para añadir una nuevo variable formatter, escribimos el nombre que queremos darle al formateador, el nombre del Bean, incluida la ruta completa de su paquete. Y lo más importante, dónde pone "Value formatted as a result of code snippet" escribimos el método del Bean que nos devolverá el valor que queramos representar, en mi caso he utilizado el método toString(), que previamente había escrito dentro del Bean:
Sólo resta pulsar el botón "OK" y ver que resultados hemos obtenido con todo esto.
Obteniendo los resultados
Para ello volvemos a ejecutar la aplicación en modo debug, y volvemos a ver que valores tiene la lista en la pestaña de variables:
Como se puede observar, en el campo "value" ahora nos aparece el valor devuelto por el método toString(), que habíamos indicado en el formateador, y que nos da la información que deseábamos sin tener que deplegar cada elemento de la lista. Esto cobra más potencia cuanto más jerarquizado este cada uno de los elementos de la lista. Imagina que te falla una propiedad de un Bean que es a su vez propiedad de otro Bean, que es cada uno de los elementos de la lista (y cuanto quieras complicarlo). En este ejemplo, para ver la propiedad deseada habría que ir abriendo el árbol, lo cual resulta muy tedioso.
Mi consejo es que probéis esta funcionalidad, y ya veréis como luego, en el trabajo diario, como ya especificaba al principio del artículo, os será de mucha utilidad.
Página de Netbeans | Netbeans Más información | Getting More out of the Debugger