Hola a todos,
Hacía bastante tiempo que no escribía ni publicaba nada, y aunque tengo varias entradas a medias y varios proyectos de los que me gustaría hablar, la verdad es que no dispongo de mucho tiempo libre.

Hoy tengo para vosotros algo que me resulta muy útil y creo que facilita bastante el trabajo a la hora de imprimir por consola el valor de cierta variable de nuestro código. Es cierto que existe el modo de ejecución debug, el cual nos permite ver en cada momento y paso a paso el valor de todas las variables de nuestro código, pero al final siempre nos vemos obligados a imprimir algún valor por consola, y aquí estoy para dar una solución rápida a este tedioso problema.

Mi solución se basa en el uso de las plantillas de código que ofrece Eclipse. La verdad es que esta idea me vino de un corto periodo de uso que le di a IntelliJ IDEA, IDE en el que me resultaba muy sencilla la tarea de mostrar una variable y su valor por consola. Echaba de menos esta funcionalidad en Eclipse, el cual ahora mismo es el IDE que más uso, tanto en casa como en el trabajo, de modo que me decidí a buscar una solución.

Como he dicho, la idea es usar las plantillas de código de Eclipse para lograrlo. Vamos a ponernos a ello:

Lo primero que hemos de hacer es abrir la ventana de configuración de eclipse, que se encuentra en el menú superior:
Windows → Preferences

Dentro seguimos la siguiente ruta:
Java → Editor → Content Assist → Templates

Deberíamos ver en este punto algo como lo mostrado en la Fig. 1, en la que se muestra todo el proceso para llegar a la opción buscada.

Fig. 1. Ventana de opciones de Eclipse.

A continuación pulsamos sobre nuevo y se nos abrirá la ventana de configuración. Debemos indicar un nombre, el cual será el texto que debemos escribir para ejecutar el comando que llamará a la plantilla; el contexto, que debemos seleccionar Java statement; una descripcion, que nos aparecerá en el menu de autocompletado al usar la plantilla; y el patrón de la plantilla.

En mi caso, los valores que he usado han sido:
Nombre: var
Descripción: print to standard out the name and value of a given variable
Patrón de la plantilla:

System.out.println("${enclosing_type}.${enclosing_method}() -> ${var:var(java.lang.Object, byte, short, int, long, float, double, boolean, char)}=" + ${var:var(java.lang.Object, byte, short, int, long, float, double, boolean, char)});${cursor}

Observando el patrón, vemos que no tiene mucha complejidad. Escribe el comando para imprimir por consola, luego añade el nombre de la clase y el método desde donde se llama, y a continuación concatenamos el nombre y el valor de la variable.

Por si os pica la curiosidad, los elementos ${var} tienen todos esos parámetros porque si no indicamos ninguno nos ofrece sólo las variables declaradas que no son primitivas. Yo quería todas las variables, de modo que se indican como parámetros la clase Object (que engloba todas las variables objetos que heredan de ella) y todas las primitivas de Java. Además, al tener los dos elementos ${var} el mismo id, únicamente tenemos que indicar la variable una sola vez. Fantástico.

Fig. 2. Ventana de autocompletado de Eclipse.

El elemento ${cursor} indica dónde se posicionará el cursor cuando se termine de completar la plantilla de código. Y eso es todo. Guardamos los cambios, salimos y volvemos al editor de código. Ahora vamos a ver cómo funciona.

Para usar la plantilla tenemos que escribir en el editor de código el nombre que le hemos dado, en mi caso var, y usar el comando Crtl + Espacio, de esa manera desplegamos el asistente de autocompletado. En caso de que sea la única coincidencia, la plantilla se completará automáticamente, pero si existen varios resultados, se mostrará una ventana como la de la Fig. 2, y debemos seleccionar la opción deseada. Aquí podemos ver la utilidad de poner una descripción a nuestra plantilla de código.

Una vez tenemos la plantilla en el editor de código, se desplegará una nueva ventana para seleccionar qué variable deseamos mostrar. Como podéis comprobar, la clase y el método desde donde se ha llamada ya se ha completado automáticamente, y sólo resta elegir la variable. Tal y como se ve en la Fig. 3.

Para concluir, si ejecutamos el código, no tiene mucho misterio pero lo pongo igual, obtendremos lo siguiente en la consola:

Main.main() -> name1=hello
Fig. 3. Ventana para seleccionar campos.

Ahora podremos mostrar rápidamente cualquier variable y su valor en cualquier momento y en cualquier método sin necesidad de andar formateando todas las líneas individualmente. Ni que decir tiene que si os interesa podéis editar la plantilla a vuestro gusto y añadir o quitar campos a vuestro antojo. Las plantillas de código son herramientas muy potentes que no todos los programadores usan, y es una lástima.

Bueno, me despido y os animo a si alguien tiene alguna idea sobre alguna plantilla la deje en los comentarios.

Saludos.
Lázarus Surazal.

Entradas relacionadas

Perfil
prLázarus logo info
Carlos J. Peláez Rivas (Lázarus Surazal)
Graduado y Máster en Ingeniería Informática por la Universidad de Málaga. Actualmente trabajando como desarrollador de aplicaciones en Java usando Vaadin.
Apasionado de los videojuegos, la música y alguna que otra tecnología, siempre buscando cosas nuevas que aprender y hacer.
Más sobre mi...
Contacto
Notificaciones