Bonjour à tous,
Je souhaite valider des préconditions sur les arguments de mes méthodes.
En cas d'invalidation, cela déclenche une exception Runtime.
Cela donne quelque chose du genre :
Cela répond à mon besoin mais je souhaiterais aller plus loin en définissant une classe de Check qui effectue ce contrôle de précondition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public void maMethode(Integer ageDeToto) { if (null == ageDeToto) throw new IllegalArgumentException("ageDeToto can't be null"); }
Ex :
Dans le code précédent, cela donnerait donc :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public class Check { public void preCondNotNull(Object arg, String message) { if (null == arg) throw new IllegalArgumentException(message); } }
Le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public void maMethode(Integer ageDeToto) { Check.preCondNotNull("ageDeToto can't be null"); }
==> Ce qui me gène est que le message fourni à la précondition sera dans ce cas alloué à chaque test de la précondition (puisque passé en argument). Alors qu'en n'utilisant pas la classe Check, ce message n'est alloué que si l'exception est lancée.
Q1 : Pensez-vous que cette allocation systématique à chaque test d'une condition puisse s'avérer problématique ou bien le garbage collector fera suffisamment bien son travail pour que ce soit transparent ?
Q2 : Connaissez-vous des API faisant déjà le même travail que ma classe Check ?
En vous remerciant.
Partager