ExplorerExplore
Technique

Comprendre les effets de bord en informatique

Une fonction qui modifie le monde autour d'elle : ce qu'est un effet de bord, et pourquoi ça compte.

Comprendre les effets de bord en informatique

En informatique, un effet de bord (ou side effect en anglais) se produit lorsqu'une fonction ou une expression modifie un état en dehors de son propre environnement local.

En clair : une fonction est censée prendre des entrées, faire un calcul, et renvoyer un résultat. Si, en plus de cela, elle modifie quelque chose d'externe (une variable globale, un fichier, l'affichage à l'écran), elle a un effet de bord.

💡 Un exemple concret pour comprendre

Pour faire simple, imaginons une fonction qui calcule le double d'un nombre.

1. Sans effet de bord (Fonction "Pure")

Cette fonction fait son travail en isolation totale. Elle reçoit un nombre, renvoie le résultat, et ne touche à rien d'autre.

function double(x) {
    return x * 2;
}

Si vous l'appelez 100 fois avec la valeur `5`, elle renverra toujours `10`, sans jamais perturber le reste de votre application.

2. Avec effet de bord (Fonction "Impure")

Ici, la fonction fait le calcul, mais elle va aussi modifier une variable située en dehors d'elle.

let compteurGlobal = 0; // Variable externe

function doubleAvecEffet(x) {
    compteurGlobal++; // <-- Effet de bord !
    return x * 2;
}

Chaque fois que vous appelez cette fonction, l'état global du programme change (`compteurGlobal` augmente). La fonction a "laissé une trace" de son passage.

🛠️ Les types d'effets de bord les plus fréquents

Les effets de bord ne sont pas de "mauvaises pratiques" en soi ; ils sont souvent indispensables pour qu'un programme soit utile. Voici les cas les plus courants :

  • Modifier une variable globale ou une propriété d'un objet parent.
  • Modifier directement les arguments reçus par référence (par exemple, ajouter un élément à un tableau qui a été passé en paramètre).
  • Écrire dans la console (`console.log`), afficher une alerte ou modifier le DOM (l'interface graphique) d'une page web.
  • Effectuer une opération d'I/O (Entrée/Sortie) : écrire dans un fichier, modifier une base de données, ou lancer une requête réseau (API).
  • Déclencher une alerte ou une notification (comme une alarme ou un ping externe).

⚠️ Pourquoi faut-il les surveiller ?

En programmation (et particulièrement en programmation fonctionnelle), on cherche souvent à limiter ou isoler les effets de bord pour plusieurs raisons :

  • Prédictibilité : Une fonction sans effet de bord (dite "pure") renverra toujours le même résultat pour les mêmes arguments. C'est le principe du déterminisme.
  • Débogage difficile : Si une variable globale change de valeur de manière inattendue et fait planter le script, il est difficile de savoir quelle fonction a causé la modification si toutes vos fonctions ont des effets de bord.
  • Tests unitaires : Une fonction sans effet de bord est extrêmement simple à tester, car elle ne nécessite pas de configurer un environnement complexe (comme simuler une base de données ou un navigateur).
📌 En résumé : L'effet de bord est l'action, pour une portion de code, de modifier un état existant en dehors de son contexte immédiat. Le secret d'un code robuste n'est pas de les interdire, mais de les contrôler et de les isoler proprement.