À retenir
- Une exécution = plusieurs exécutions identiques.
- Garantit que l'état final reste stable et prévisible.
- Essentiel pour la fiabilité des réseaux et des bases de données.
Qualifie une opération ou une fonction qui, même si on l'exécute plusieurs fois de suite, produit exactement le même résultat final que la première fois. C'est un peu comme le bouton d'un ascenseur : si vous appuyez une fois pour demander le 4ème étage, appuyer dix fois de plus ne changera pas votre destination et ne fera pas monter l'ascenseur plus haut.
Étymologie
Le mot vient du latin idem (« le même ») et potentia (« pouvoir » ou « force »). Littéralement, il désigne une action qui garde la « même force » ou le même effet, quel que soit le nombre de répétitions.
Exemples d'usage
- En mathématiques, la fonction valeur absolue : si on l'applique plusieurs fois, le résultat ne change plus (la valeur absolue de la valeur absolue de -5 est toujours 5).
- En informatique (HTTP), la méthode PUT : envoyer plusieurs fois les mêmes informations pour mettre à jour un profil utilisateur ne créera pas plusieurs profils, il restera identique.
- En gestion de fichiers, la commande
mkdir -p: elle crée un dossier s'il n'existe pas, mais ne fait rien et ne renvoie pas d'erreur s'il existe déjà.
Cas d'usage
Ce concept est fondamental dans le développement d'API et les systèmes distribués. Il permet de sécuriser les échanges : si une connexion internet coupe et qu'on ne sait pas si un ordre a été reçu, on peut le renvoyer sans risque de provoquer des erreurs ou des doublons (comme un double paiement).
Bonnes pratiques
Lors de la conception d'un logiciel, essayez de rendre vos fonctions de mise à jour idempotentes. Cela simplifie énormément la gestion des erreurs réseau et les mécanismes de « retry » (réessai automatique) car vous n'avez plus peur de répéter une action par accident.
Synonymes
Antonymes
Conseil
Pour tester si une fonction est idempotente, demandez-vous : « Si je relance ce code immédiatement après sa réussite, l'état de mon système ou de ma base de données sera-t-il modifié une seconde fois ? ». Si la réponse est oui, vous n'êtes pas en présence d'idempotence.
Questions fréquentes
Est-ce qu'ajouter un produit au panier est idempotent ?
Généralement non. Si cliquer deux fois ajoute deux produits, l'opération n'est pas idempotente. Elle le deviendrait si l'action était 'définir la quantité à 1'.
Quelle est la différence avec une opération 'sûre' ?
Une opération sûre (comme lire une page web) ne change rien du tout. Une opération idempotente peut changer quelque chose (créer un dossier), mais seulement la première fois.