Une fonction qui modifie le monde autour d'elle : ce qu'est un effet de bord, et pourquoi ça compte.
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.
Pour faire simple, imaginons une fonction qui calcule le double d'un nombre.
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.
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 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 :
En programmation (et particulièrement en programmation fonctionnelle), on cherche souvent à limiter ou isoler les effets de bord pour plusieurs raisons :
📌 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.