Il y a 15 ans -

Temps de lecture 1 minute

Bêtisier 2007

L’époque s’y prête : pour finir l’année en beauté, et exploiter une formule qui fait les choux gras de TF1, voici une sélection de perles que nous avons rencontrées en 2007, sur des projets ou sur la toile. Nous vous invitons à poster en commentaire vos propres rencontres du troisième type… A vous de jouer !

Une gestion astucieuse des exceptions

J’aime beaucoup celle-là, presqu’une blague au second degré, et une source inépuisable de perplexité. J’ai laissé le commentaire, qui vaut lui-aussi le détour.

/**
 * lever une exception "sémantique", et en plus on la trace dans
 * {@link System#err}. Elle est pas belle, la vie ?
 */
private static RuntimeException throwRuntimeException(final RuntimeException e) {
    throw e;
}

Et le code client qui permet d’exploiter cette puissante API :

//...
throw throwRuntimeException(new NullPointerException("Parameter should not be null: " + paramName));
//...

L’essence du vide

Signalée par un collègue hollandais, le concept sous-jacent de cette classe a fait l’objet d’un passionnant débat sur notre tech-list.

/*
 * Empty
 *
 * $Revision: 1.1 $
 *
 * Copyright xxx */

public class Empty {

}

Avouons que nous avons rarement croisé une classe portant mieux son nom…

Certains d’entre nous ont suggéré de la rendre plus amusante encore en adoptant le design suivant (je considère quant à moi que ce refactoring nuit à la lisibilité initiale) :

public class Empty {
  public boolean isEmpty() {
    return false;
  }
}

voire de fournir un wrapper, au cas où :

public class EmptyWrapper {
   public EmptyWrapper(Empty empty) {
      // do nothing its empty anyway..
   }

   public void getEmpty() {
   }
}

No comment

Runtime.getRuntime().exec("d:/path/to/bin/sleep.exe " + nbSecond);

Out Of Order

La page d’erreur de l’année.

Une erreur est survenue...

Commentaire

5 réponses pour " Bêtisier 2007 "

  1. Published by , Il y a 15 ans

    Bonjour Guillaume,

    sympa le « private static RuntimeException throwRuntimeException(final RuntimeException e) ». J’ai l’impression de lire du code que j’aurais écrit. Bizarre quand même d’annoncer dans la javadoc qu’on trace vers System#err, et ne pas le faire.
    Le « private » laisse penser qu’il n’y a pas beaucoup de clients de cette API ridicule, qui dut cependant permettre d’assurer un temps que les exceptions étaient tracées.

    J’ai bien ri en tout cas, merci pour ce bêtisier.

    Moi j’avais bien aimé : String s = new String(«  »);

    Ah, et des dates stockées en base sous forme de VARCHARs.

  2. Published by , Il y a 15 ans

    J’aurais bien aimé voir également le Boolean.getBoolean(« true ») qui retourne toujours false. Très rigolo quand on sait que cela va chercher la valeur une propriété système dont le nom est true et que cette propriété n’existe pas.

    Bien marrant ce bétisier. En plus, c’est nettement moins long que ceux de tf1.

  3. Published by , Il y a 15 ans

    Vous êtes impitoyable Ludovic :-)

    Qui est coupable en cas d’utilisation de Boolean.getBolean(« true ») ? Le pauvre développeur Java qui se fait piéger ? L’inventeur de cette merveilleuse méthode ? Le ‘mainteneur’ de la classe Boolean qui n’a pas deprecaté cette affreuse méthode ?

    Il faudra un jour faire un bétisier des APIs !
    – L’enfer de Date et Calendar
    – SimpleDateFormat qui n’est pas thread safe
    – etc

    Cyrille (Xebia)

  4. Published by , Il y a 15 ans

    N’oublions pas les commentaires :

    /**
    * @throws Exception if an exception appends
    */

    Notez au passage la maîtrise de l’anglais.

  5. Published by , Il y a 15 ans

    Pourquoi faire simple ?

    boolean b = Boolean.TRUE.booleanValue();

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Sapient, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.