Immuable
Une valeur immuable est une valeur dont le contenu ne peut pas être modifié sans créer une toute nouvelle valeur, par opposition aux valeurs mutables.
En JavaScript, les valeurs primitives sont immuables : une fois qu'une valeur primitive est créée, elle ne peut pas être modifiée, même si la variable qui la contient peut être réaffectée à une autre valeur. À l'inverse, les objets et les tableaux sont mutables par défaut : leurs propriétés et éléments peuvent être modifiés sans réaffecter une nouvelle valeur.
Utiliser des objets immuables présente plusieurs avantages :
- Améliorer les performances (pas besoin d'anticiper les modifications futures de l'objet)
- Réduire l'utilisation de la mémoire (utiliser des références d'objet au lieu de cloner tout l'objet)
- Sécurité lors de l'exécution concurrente (plusieurs threads peuvent référencer le même objet sans interférer entre eux)
- Réduire la charge cognitive des développeur·euse·s (l'état de l'objet ne change pas et son comportement reste toujours cohérent)
Notez qu'il est facile de prouver la mutabilité : un objet est mutable tant qu'il existe un moyen de modifier ses propriétés. À l'inverse, l'immutabilité est difficile à prouver s'il n'existe pas de sémantique de langage pour la garantir : cela relève du contrat entre développeur·euse·s. Par exemple, Object.freeze() est une méthode au niveau du langage permettant de rendre un objet immuable en JavaScript.
Voir aussi
- Terme associé du glossaire :
- Objet immuable sur Wikipédia