Acabo de encontrarme con esta vieja pregunta preguntando qué hay de malo en el estado global, y la respuesta aceptada y más votada afirma que no puede confiar en ningún código que funcione con variables globales, porque algún otro código en algún otro lugar podría aparecer y modificar su valor y luego no sabes cuál será el comportamiento de tu código porque los datos son diferentes. Pero cuando miro eso, no puedo evitar pensar que es una explicación realmente débil, porque ¿en qué se diferencia eso 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 cuáles son los datos; Ese es todo el punto. Lo único que importa es que su código maneja correctamente los datos que encuentra. (Obviamente, estoy pasando por alto el problema a menudo espinoso del almacenamiento en caché aquí, pero ignoremos eso por el momento).
Pero si los datos con los que está trabajando provienen de una fuente externa sobre la cual su código no tiene control, como una base de datos (o entrada del usuario, o un socket de red, o un archivo, etc.) y no hay nada de malo con eso, entonces, ¿cómo es que los datos globales dentro del código mismo, sobre los cuales su programa tiene un mayor grado de control, son algo malo cuando obviamente son mucho menos malos que cosas perfectamente normales que nadie ve como un problema?