Paramètres booléens

En général, il est préférable d'éviter d'écrire une méthode avec des paramètres booléens car ce n'est pas très lisible. Supposons par exemple qu'on écrit une méthode qui recherche des entités, avec un paramètre qui permet d'exclure les cercles de la recherche :

IList<Entity> FindEntities(bool ignoreCircles)
{
  //...
}

Quand on appelle la méthode, ça donne ceci :

IList<Entity> entities = FindEntities(true);

Quand on lit le code, il est impossible de savoir à quoi correspond le true sans aller examiner la signature de la méthode.

Pour éviter cela, on peut remplacer le booléen par une énumération :

enum Mode {
  IgnoreCircles,
  IncludeCircles
}

La méthode est réécrite de cette façon :

IList<Entity> FindEntities(Mode mode)
{
  //...
}

et appelée comme ça, ce qui est beaucoup plus clair :

IList<Entity> entities = FindEntities(Mode.IgnoreCircles);

Mais bon c'est un peu plus de travail car il faut créer une énumération. Le mieux c'est d'utiliser les paramètres nommés :

IList<Entity> entities = FindEntities(ignoreCircles: true);

Et là c'est beaucoup plus clair.

Add new comment