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.
Commentaire
5 réponses pour " Bêtisier 2007 "
Published by David Andriana , 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.
Published by Ludovic Bert , 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.
Published by Cyrille Le Clerc , 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)
Published by Frank Marshall , 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.
Published by Mathieu Saadé , Il y a 15 ans
Pourquoi faire simple ?
boolean b = Boolean.TRUE.booleanValue();