Utilisation des Booleans : Bonnes pratiques

Aujourd’hui, un petit focus sur les « boolean »s et les « Boolean »s.

Java 5 a introduit l’auto-boxing, vous pouvez donc écrire :

  1. Boolean grandBoolean = true; // java transforme tout seul en Boolean grandBoolean = Boolean.TRUE;
  2. boolean petitBoolean = Boolean.TRUE; //java transforme en boolean petitBoolean = true;

et surtout vous pouvez écrire :

  1. if (grandBoolean) {
  2.     //faire quelque chose
  3. }

Java le transforme sans vous le dire en :

  1. if (grandBoolean.booleanValue()) {
  2.     //faire quelque chose
  3. }

Et c’est là tout le problème !
Quand on utilise les Boolean (grand B), on travaille avec des objets sur lequel on appelle une méthode. Il peut donc y avoir un NullPointerException !
Car comme tout objet, un Boolean peut-être null.

Donc lorsque vous travaillez avec un Boolean (grand B), vous devez toujours tester la non nullité avant de l’utiliser surtout s’il vient d’une base de données ou de quelque chose que vous ne maitrisez pas. Vous ne pouvez jamais savoir si il est renseigné en base ni si le service qui vous donne cette information ne va pas retourner un null.

De plus, lorsque vous créez une méthode qui teste quelque chose est doit renvoyer vrai ou faux, utilisez les boolean (petit b) car dans le cas contraire l’appelant doit impérativement tester si la valeur de retour de votre fonction n’est pas nulle. Comment peut-il être sur que vous ne renvoyez pas null dans certains cas ?

Donc n’écrivez pas :

  1. public Boolean isValide(MyVo vo) {
  2.     …
  3. }

Car il faudrait l’utiliser comme cela :

  1. Boolean isok = isValide(vo);
  2. if (isok != null && isok) {
  3.     …
  4. }

Ecrivez plutôt :

  1. public boolean isValide(MyVo vo) {
  2.     …
  3. }

pour l’utiliser sans problème :

  1. if (isValide(vo)) {
  2.     …
  3. }

D’autre part, j’en profite pour vous rappeler que :

  1. if (activ) {
  2.     monChamp.setEnabled(true);
  3. } else {
  4.     monChamp.setEnabled(false);
  5. }

Se simplifie facilement en :

  1. monChamp.setEnabled(activ);

Bonne prog à tous,

Le commentaires sont fermés.