Hygiénique

Définition, exemples et bonnes pratiques

À retenir

  • L'hygiène évite les collisions de noms de variables (capture accidentelle).
  • Elle rend le code généré automatiquement beaucoup plus sûr et prévisible.
  • Elle dispense le développeur de devoir vérifier chaque nom de variable utilisé dans les macros d'une bibliothèque.

En programmation, on dit qu'un système de macros est hygiénique lorsqu'il empêche automatiquement les conflits de noms de variables. C'est un mécanisme de sécurité qui garantit que les variables créées à l'intérieur d'une macro ne viendront pas accidentellement interférer avec celles du reste du programme (et inversement), comme si le code de la macro était enfermé dans une bulle étanche.

Étymologie

Dérivé du grec hygieinos (sain), le terme est utilisé en informatique depuis le milieu des années 1980 (notamment pour le langage Scheme). Il exprime l'idée de garder l'espace de noms "propre" et d'éviter la "contamination" entre les différentes parties du code lors de la génération automatique de texte source.

Exemples d'usage

  • Dans le langage Rust, les macros sont hygiéniques : une variable x définie dans une macro ne sera pas la même que la variable x définie par l'utilisateur du code.
  • Le langage Scheme est historiquement le premier à avoir formalisé cette notion pour corriger les bugs fréquents dans Lisp.
  • Le préprocesseur du langage C est un exemple de système non hygiénique, car il effectue de simples remplacements de texte sans vérifier les conflits de noms.

Cas d'usage

Ce concept est crucial en métaprogrammation, c'est-à-dire quand on écrit des programmes qui génèrent ou transforment d'autres programmes. On le retrouve dans la création de DSL (langages dédiés), de bibliothèques d'automatisation et dans la conception de compilateurs modernes.

Bonnes pratiques

Privilégiez toujours les systèmes de macros hygiéniques s'ils sont disponibles. Si vous devez utiliser des macros non hygiéniques (comme en C ou C++), la règle d'or est de nommer vos variables internes avec des préfixes uniques ou des noms très longs et improbables pour réduire le risque de collision.

Synonymes

sûr protégé isolé

Antonymes

antihygiénique polluant

Conseil

Pour bien comprendre, imaginez une macro comme un calque que vous posez sur votre dessin. Un système hygiénique s'assure que les coups de crayon sur le calque ne tachent jamais le papier original en dessous, même si vous dessinez aux mêmes endroits.

Questions fréquentes

Qu'est-ce que la capture de variable ?

C'est l'erreur qui survient lorsqu'une macro utilise par mégarde une variable du code principal au lieu de la sienne, provoquant des bugs imprévisibles.

Peut-on forcer une macro à être non hygiénique ?

Oui, certains langages permettent d'enfreindre l'hygiène volontairement pour interagir directement avec les variables du code appelant.