Effet secondaire

Définition, exemples et bonnes pratiques

À retenir

  • Une fonction avec effet secondaire change l'état global du programme ou interagit avec l'extérieur.
  • Ils rendent le code plus difficile à prédire et à tester car ils dépendent du contexte.
  • Leur absence totale définit ce qu'on appelle une "fonction pure".

En programmation, on parle d'effet secondaire lorsqu'une fonction ou un bloc de code modifie quelque chose en dehors de son propre espace de travail, au-delà du simple résultat qu'il renvoie. C'est comme si vous demandiez à une machine de calculer le prix d'un article, mais qu'en plus de vous donner le prix, elle changeait aussi la couleur de l'affichage de tout le magasin.

Étymologie

Traduction du terme anglais side effect, emprunté au domaine médical où un médicament agit sur le symptôme visé mais provoque aussi d'autres réactions dans le corps. En informatique, cela désigne toute action "périphérique" à l'objectif principal de retour de donnée.

Exemples d'usage

  • Une fonction qui calcule une somme mais qui, en passant, enregistre le résultat dans un fichier sur le disque dur.
  • Modifier une variable globale (partagée par tout le programme) à l'intérieur d'une petite fonction locale.
  • Afficher un message dans la console (console.log) ou envoyer un e-mail au moment de valider un panier d'achat.

Cas d'usage

Ce concept est central en programmation fonctionnelle, où l'on cherche à les éviter pour rendre le code plus prévisible. On les retrouve partout ailleurs : mises à jour de bases de données, modifications d'interface utilisateur (DOM), ou gestion de fichiers.

Bonnes pratiques

Il est recommandé de limiter les effets secondaires pour rendre le code plus facile à tester et à déboguer. Idéalement, une fonction devrait être "pure" (sans effet secondaire) autant que possible. Si une fonction doit en avoir, il est crucial de bien le documenter ou d'utiliser un nom explicite (ex: sauvegarderEtCalculer plutôt que juste calculer).

Synonymes

effet de bord effet latéral deutergie

Antonymes

fonction pure transparence référentielle

Conseil

Quand vous débutez, essayez de séparer vos fonctions en deux catégories : celles qui calculent des données (sans effet secondaire) et celles qui agissent sur le système (affichage, stockage). Cela rendra votre code beaucoup plus propre et robuste.

Questions fréquentes

Est-ce que les effets secondaires sont mauvais ?

Pas forcément, ils sont même indispensables pour qu'un programme interagisse avec l'utilisateur ou le réseau. Le problème survient lorsqu'ils sont cachés ou imprévisibles.

Qu'est-ce qu'une fonction pure ?

C'est une fonction qui n'a aucun effet secondaire : pour les mêmes entrées, elle donnera toujours le même résultat sans rien modifier ailleurs.