domingo, 4 de enero de 2009

“with” en Groovy

Acabo de leer un artículo Getting Groovy With “with”, donde el autor nos presenta un ejemplo de código Java para imprimir una fecha

  1 // PrintIndependenceDay.java
  2 import java.util.Calendar;
  3 import java.util.Date;
  4 public class PrintIndependenceDay {
  5   public static void main(String[] args) {
  6     Calendar calendar = Calendar.getInstance();
  7     calendar.clear();
  8     calendar.set(Calendar.MONTH, Calendar.JULY);
  9     calendar.set(Calendar.DATE, 4);
 10     calendar.set(Calendar.YEAR, 1776);
 11     Date time = calendar.getTime();
 12     System.out.println(time);
 13   }
 14 }

Y luego nos presenta el código equivalente en Groovy

  1 // PrintIndependenceDay.groovy
  2 def calendar = Calendar.instance
  3 calendar.with {
  4   clear()
  5   set MONTH, JULY
  6   set DATE, 4
  7   set YEAR, 1776
  8   println time
  9 }

En realidad este código es bastante legible para un programador en Delphi o Visual Basic.

Cuando programo en Java o Groovy, es una prioridad reducir el ruido como lo hace este “closure”. Groovy es un lenguaje dinámico una de cuyas tareas es reducir el ruido que se tiene en Java. En este caso el “ruido” se expresa como la repetición (6 veces) de “calendar” , que en el programa en Groovy se lo escribe una sola vez.

Solo cuando leí el blog caí en cuenta de enorme ayuda que extrañaba de mis tiempos de programador Delphi. Recomiendo la lectura total del mismo