Я бы подумал об этом немного по-другому: поведение, подобное «глобальной переменной», - это цена, которую платят администраторы баз данных (DBA), потому что это необходимое зло для выполнения их работы.
Проблема с глобальными переменными, как указали несколько других, не является произвольной. Проблема в том, что их использование делает поведение вашей программы все менее и менее предсказуемым, поскольку становится все труднее определить, кто использует переменную и каким образом. Это большая проблема для современного программного обеспечения, потому что от современного программного обеспечения обычно требуется много гибких вещей. Это может сделать миллиарды или даже триллионы сложных государственных манипуляций в ходе бега. Возможность доказать истинные утверждения о том, что будет делать это программное обеспечение в этих миллиардах или триллионах операций, чрезвычайно важна.
В случае современного программного обеспечения все наши языки предоставляют инструменты для помощи в этом, такие как инкапсуляция. Выбор не использовать его не нужен, что приводит к менталитету «глобалы - зло». Во многих регионах в области разработки программного обеспечения единственными, кто их использует, являются люди, которые не знают, как лучше кодировать. Это означает, что они не только напрямую создают проблемы, но и косвенно предполагают, что разработчик не знал, что делал. В других регионах вы обнаружите, что глобальные переменные абсолютно нормальны (в частности, встроенное программное обеспечение любит глобальные переменные, частично потому, что они хорошо работают с ISR). Тем не менее, среди многих разработчиков программного обеспечения они являются голосом меньшинства, поэтому единственный голос, который вы слышите, - «глобальные злые».
Разработка баз данных - одна из тех голосовых ситуаций меньшинства. Инструменты, необходимые для работы DBA, очень мощные, и их теория не основана на инкапсуляции. Чтобы извлекать из своих баз данных каждый скачок производительности, им нужен полный беспрепятственный доступ ко всему, подобно глобальным. Используйте одну из их огромных 100 миллионов строк (или больше!) Баз данных, и вы поймете, почему они не позволяют своему движку БД выдерживать любые удары.
Они платят за это дорогую цену. Администраторы баз данных вынуждены быть почти патологичными с их вниманием к деталям, потому что их инструменты не защищают их. Лучшее, что у них есть в способе защиты - это ACID или, возможно, внешние ключи. Те, кто не патологичен, оказываются в полном беспорядке таблиц, которые совершенно непригодны или даже повреждены.
Это не редкость, когда у вас есть 100 000 линейных программных пакетов. Теоретически, любая строка в программном обеспечении может влиять на любой глобал в любой момент времени. В администраторах баз данных вы никогда не найдете 100 000 различных запросов, которые могут изменить базу данных. Это было бы неразумно поддерживать с вниманием к деталям, необходимым для защиты вас от себя. Если у администратора базы данных есть что-то подобное, он намеренно инкапсулирует свою базу данных, используя средства доступа, обходя проблемы «глобального подобия», и затем выполняет столько работы, сколько возможно, с помощью этого «более безопасного» механизма. Таким образом, когда дело доходит до толчка, даже пользователи базы данных избегают глобальных изменений. Они просто приходят с большой опасностью, и есть альтернативы, которые такие же сильные, но не такие опасные.
Вы бы предпочли прогуляться по битому стеклу или по красиво подметенным тротуарам, если все остальные вещи равны? Да, вы можете ходить по битому стеклу. Да, некоторые люди даже зарабатывают на жизнь этим. Но все же, просто позвольте им подметать тротуар и двигаться дальше!