Discriminant

Définition, exemples et bonnes pratiques

À retenir

  • Sert à identifier la forme ou la variante active d'une donnée.
  • Essentiel pour la sécurité logicielle (évite de lire des données pour ce qu'elles ne sont pas).
  • Souvent associé aux concepts d'énumérations et de polymorphisme.

En informatique, un discriminant est une donnée ou un paramètre spécial qui permet de distinguer les différentes variantes d'un même objet ou d'une structure de données. C'est comme une étiquette apposée sur une boîte à outils qui indiquerait si elle contient du matériel de peinture ou de plomberie, permettant ainsi de savoir comment l'utiliser correctement avant même de l'ouvrir.

Étymologie

Issu du latin discriminare (séparer, distinguer). En programmation, le terme est apparu pour désigner l'élément qui permet de choisir entre plusieurs interprétations possibles d'une même zone mémoire ou d'une structure complexe (notamment dans le langage Ada).

Exemples d'usage

  • Dans une structure de données Forme, le discriminant peut être un champ type prenant les valeurs 'Cercle' ou 'Carré' pour savoir quels autres champs lire (rayon ou côté).
  • Dans le langage Rust, le discriminant est la valeur interne utilisée par une enum pour identifier quelle variante est active.
  • En base de données, une colonne 'type_utilisateur' servant à différencier un compte 'Client' d'un compte 'Administrateur' dans une table commune.

Cas d'usage

On l'utilise principalement dans la gestion des types variants ou des unions étiquetées. Il intervient lors de la conception de structures de données flexibles où une même entité peut prendre plusieurs formes selon le contexte, tout en garantissant la sécurité du code.

Bonnes pratiques

Il est recommandé d'utiliser des énumérations plutôt que des nombres bruts (nombres magiques) pour définir un discriminant. Il faut également s'assurer que le code traite tous les cas possibles définis par le discriminant pour éviter les erreurs de logique ou les plantages système.

Synonymes

déterminant étiquette tag indicateur de type

Conseil

Si vous débutez, voyez le discriminant comme une clé de lecture : avant de demander à votre programme d'effectuer un calcul, utilisez le discriminant pour vérifier qu'il manipule le bon type d'information.

Questions fréquentes

Quelle est la différence entre un discriminant et un tag ?

En informatique, les deux termes sont souvent synonymes. Le 'tag' (ou étiquette) est le nom courant, tandis que 'discriminant' est le terme technique utilisé dans les langages de programmation formels comme Ada.

Un discriminant peut-il être modifié ?

Généralement non, une fois l'objet créé avec une certaine variante, changer le discriminant reviendrait à changer la nature même de l'objet, ce qui peut corrompre les données.