Acabo de encontrar esta vieja pregunta preguntando qué es tan malo sobre el estado global, y la respuesta más votada y aceptada afirma que no puede confiar en ningún código que funcione con variables globales, ya que podría aparecer algún otro código en otro lugar, modificar su valor y luego no lo sabe ¡cuál será el comportamiento de su código porque los datos son diferentes! Pero cuando lo veo, no puedo dejar de pensar que esa es una explicación muy débil, ya que no es tan diferente de trabajar con datos almacenados. en una base de datos?
Cuando su programa está trabajando con datos de una base de datos, no le importa si otro código en su sistema lo está cambiando, o incluso si un programa completamente diferente lo está cambiando, para el caso. No te importa lo que son los datos; ese es todo el punto Todo lo que importa es que su código trate correctamente con los datos que encuentra. (Obviamente, estoy ocultando el tema del almacenamiento en caché a menudo espinoso, pero ignoremos eso por el momento).
Pero si los datos con los que está trabajando provienen de una fuente externa sobre la que su código no tiene control, como una base de datos (o entrada de usuario, un socket de red, un archivo, etc.) y no hay nada de malo en eso, entonces, ¿cómo son los datos globales dentro del código en sí, sobre el cual su programa tiene un mayor grado de control? De alguna manera es algo malo cuando obviamente es mucho menos malo que las cosas perfectamente normales que nadie ve como un problema?