À retenir
- Désigne un changement d'état global ou externe provoqué par une fonction.
- Rend le comportement d'un programme plus complexe à prédire et à tester.
- Est l'opposé du concept de fonction pure.
Un effet de bord se produit lorsqu'une fonction ou un morceau de code modifie quelque chose en dehors de son propre périmètre, au-delà du simple résultat qu'il est censé renvoyer. C'est comme si, en demandant l'heure à quelqu'un, cette personne en profitait pour repeindre votre porte d'entrée : l'action a une conséquence imprévue ou indirecte sur l'environnement.
Étymologie
Il s'agit d'une traduction calquée sur l'anglais side effect. À l'origine, ce terme est issu du milieu médical (effet secondaire d'un médicament). En informatique, il s'est imposé pour décrire tout changement d'état du système qui n'est pas explicitement le but premier d'une opération.
Exemples d'usage
- Une fonction de calcul qui, en plus de donner un résultat, modifie une variable globale utilisée par tout le programme.
- L'affichage d'un message sur l'écran ou l'écriture dans un fichier de log.
- La modification d'une base de données lors d'une simple vérification de validité.
Cas d'usage
Ce concept est central en programmation fonctionnelle, où l'on cherche à les éviter pour rendre le code prévisible. On le retrouve aussi dans la gestion des bases de données et la conception d'interfaces utilisateur (UI), où une action sur un bouton peut modifier l'affichage d'un autre composant par effet de bord.
Bonnes pratiques
Il est conseillé de limiter les effets de bord au strict nécessaire. Lorsqu'ils sont indispensables (comme sauvegarder un fichier), il faut les isoler et les documenter clairement. Privilégier les "fonctions pures" (sans effets de bord) facilite grandement les tests et la maintenance du code.
Synonymes
Antonymes
Conseil
Si vous débutez, essayez de faire en sorte que vos fonctions ne dépendent que des informations que vous leur donnez en entrée et qu'elles ne touchent à rien d'autre qu'à leur propre résultat. Cela vous évitera bien des bugs difficiles à trouver !
Questions fréquentes
Les effets de bord sont-ils forcément des erreurs ?
Non, ils sont parfois nécessaires (écrire dans une base, afficher une image). Ils deviennent problématiques lorsqu'ils sont cachés ou non maîtrisés.
Comment éviter les effets de bord ?
En utilisant des variables locales au lieu de variables globales et en s'assurant qu'une fonction ne fait qu'une seule chose bien précise sans toucher au reste.