Opérateur de fusion null

Définition, exemples et bonnes pratiques

À retenir

  • Il se symbolise généralement par un double point d'interrogation (??).
  • Il sert à gérer les valeurs par défaut de manière élégante.
  • Il rend le code plus court et plus facile à lire qu'un bloc if/else classique.

C'est un raccourci d'écriture en programmation qui permet de définir une valeur de secours si une donnée est absente ou vide (null). C'est comme un filet de sécurité : on demande une information, et si elle n'existe pas, on utilise une valeur par défaut prédéfinie.

Étymologie

Traduction directe de l'anglais null coalescing operator. Le terme « fusion » (ou coalescence) illustre l'idée de combiner deux possibilités pour n'en retenir qu'une seule qui soit valide. Il s'est généralisé avec l'évolution des langages modernes comme C#, PHP (depuis la version 7) et JavaScript (ES2020).

Exemples d'usage

  • En JavaScript ou PHP : $pseudo = $nom_utilisateur ?? 'Anonyme'; (si le nom est absent, on utilise 'Anonyme').
  • En C# : int age = ageSaisi ?? 18; (si l'âge n'est pas renseigné, on applique 18 par défaut).

Cas d'usage

Cet opérateur est principalement utilisé lors de la récupération de données externes : formulaires web, paramètres d'une base de données, ou lecture de fichiers de configuration. Il permet d'éviter que le programme ne s'arrête brutalement à cause d'une valeur manquante.

Bonnes pratiques

Attention à ne pas le confondre avec l'opérateur logique « OU » (||). Dans certains langages comme le JavaScript, le « OU » remplacera aussi le chiffre 0 ou une chaîne vide, alors que l'opérateur de fusion ?? ne s'activera que si la donnée est réellement strictement nulle ou non définie.

Synonymes

opérateur de coalescence null

Conseil

Utilisez-le systématiquement quand vous travaillez avec des données optionnelles. C'est la manière la plus moderne et la plus sûre d'éviter les fameuses erreurs de type NullReferenceException ou undefined qui font souvent planter les applications débutantes.

Questions fréquentes

Quelle est la différence avec une condition classique ?

Il remplace avantageusement un bloc 'si...alors...sinon' en une seule ligne, ce qui rend le code plus propre.

Est-ce que tous les langages l'utilisent ?

Non, mais il est présent dans les langages les plus populaires comme C#, PHP, JavaScript, Swift et Dart.