PMD, los nazis y las clases abstractas

Ya he comentado en alguna ocasión lo arbitrarias que me parecen algunas reglas de PMD y Checkstyle, y lo fácil que es darle un mal uso a una herramienta como Sonar.

Pues esta semana me ha tocado trabajar en la conformidad con PMD y me he llevado una desagradable sorpresa en forma de mensaje de error: "Abstract classes should be named 'AbstractXXX'." Y nada menos que un error crítico, la segunda categoría más importante.

Podría decirlo de muchas formas, pero para qué... los desarrolladores de PMD son UNOS PUTOS NAZIS.

Leer el resto de la entrada

¿Qué es Bazel (aka Blaze)?

¿Es un pájaro? ¿Es un avión? ¡No! Es una herramienta de construcción.

Concretamente, es la versión abierta del sistema que usan internamente en Google, que se llama Blaze, y que forma parte de un triángulo de tecnologías que dan soporte al desarrollo de todas sus aplicaciones internas –los proyectos de Google que se hacen en abierto, como Chromium, se gestionan de otra forma.

Leer el resto de la entrada

Funny coding (II)

Como desarrollador, eres creativo. El Ferran Adriá del Java. Por eso, comparar fechas debe ser algo especial, mágico, una explosión de sensaciones. Como esta obra maestra:

void validateDate(Date date) {
  Date now = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
  String date1 = sdf.format(date);
  String date2 = sdf.format(now);
  try {
    Date r1 = sdf.parse(date1);
    Date r2 = sdf.parse(date2);
    if (r1.compareTo(r2) < 0) {
      addError("Invalid date");
    }
  } catch (ParseException e) {}
}

Leer el resto de la entrada