Je viens de croiser cette vieille question en demandant ce qui est si pervers à propos de l'état global, et la réponse acceptée avec le plus grand nombre de votes affirme que vous ne pouvez faire confiance à aucun code fonctionnant avec des variables globales, car un autre code situé ailleurs pourrait en modifier le contenu. valeur et vous ne savez pas quel sera le comportement de votre code car les données sont différentes! Mais quand je regarde cela, je ne peux pas m'empêcher de penser que c'est une explication vraiment faible, car en quoi est-ce différent de travailler avec des données stockées dans une base de données?
Lorsque votre programme utilise des données d'une base de données, vous ne vous souciez pas de savoir si un autre code de votre système le modifie, ou même si un programme complètement différent le modifie, d'ailleurs. Vous ne vous souciez pas de ce que les données sont; c'est le point entier. Tout ce qui compte, c'est que votre code traite correctement les données qu'il rencontre. (Évidemment, je passe sous silence la question souvent épineuse de la mise en cache ici, mais ignorons-le pour le moment.)
Mais si les données que vous utilisez proviennent d'une source externe sur laquelle votre code n'a aucun contrôle, tel qu'une base de données (ou une entrée utilisateur, ou une prise réseau, ou un fichier, etc.) et que rien ne se passe mal. Avec cela, comment les données globales contenues dans le code lui-même - sur lesquelles votre programme a un degré de contrôle beaucoup plus important - sont-elles un inconvénient quand elles sont évidemment bien moins mauvaises que des données parfaitement normales que personne ne considère comme un problème?