Comme le disent les autres, bien sûr, c'est toujours une fonction pure.
Cependant, parlons des problèmes de conception. Vous avez raison d'essayer de faire quelque chose pour garder le code SEC, en mettant la valeur en une seule fois. De plus, ce qui, à mon avis, devrait également être pris en considération est le niveau de couplage approprié.
L'utilisation d'une fonction vous donne plus de flexibilité pour changer l'implémentation, c'est-à-dire que l'approche de la fonction offre un couplage plus lâche qu'une variable globale.
La question est de savoir si l'on en a besoin ou non?
Si les consommateurs et le fournisseur sont dans le même module et que le fournisseur est privé du module, il est difficile de prétendre que ce niveau de couplage lâche est nécessaire, car si le fournisseur nécessite une mise à niveau d'une variable privée vers un méthode privée, une refactorisation simple au sein du module peut être appliquée aux consommateurs en même temps. Utiliser une méthode / fonction avant d'en avoir vraiment besoin pourrait tomber sous YAGNI.
Même si le (s) consommateur (s) et le fournisseur sont dans des modules différents, et pourtant les modules sont versionnés ensemble (par exemple, vous utilisez un minifieur, afin que les modules des consommateurs et du fournisseur soient dans le même fichier), YAGNI peut également s'appliquer.
D'un autre côté, si, par exemple, le producteur se trouve dans une bibliothèque ou un package ou module d'API qui est versionné séparément du ou des consommateurs, alors l'utilisation de la fonction peut être appropriée. Dans ce cas, nous devrions examiner la longévité de l'API et des principes comme l'OCP.
(Sur une autre note, si votre code est d'une taille significative, j'encouragerais l'utilisation de modules avec des champs et des méthodes plutôt que des variables et des fonctions globales.)