Я б подумав про це дещо інакше: "глобальна змінна", як поведінка, - це ціна, яку платять адміністратори бази даних (DBA), тому що це необхідно зло, щоб виконувати свою роботу.
Як зазначають кілька інших, проблема глобальних змінних не є довільною. Проблема полягає в тому, що їх використання робить поведінку вашої програми менш і менш передбачуваною, оскільки стає складніше визначити, хто використовує змінну і яким чином. Це велике питання для сучасного програмного забезпечення, оскільки сучасне програмне забезпечення, як правило, просять зробити багато багатьох гнучких речей. Це може робити мільярди або навіть трильйони складних державних маніпуляцій під час пробігу. Можливість доказувати правдиві твердження про те, що це програмне забезпечення буде робити в тих мільярдах чи трильйонах операцій, є надзвичайно цінною.
Що стосується сучасного програмного забезпечення, всі наші мови надають інструменти для сприяння у цьому, такі як інкапсуляція. Вибір не використовувати його зайвий, що призводить до менталітету "глобали - це зло". У багатьох регіонах галузі розробки програмного забезпечення користуються лише людьми, які не вміють краще кодувати. Це означає, що вони не тільки безпосередньо переживають проблеми, але й опосередковано припускають, що розробник не знав, що вони роблять. В інших регіонах ви виявите, що глобальні споживання є абсолютно нормальними (вбудоване програмне забезпечення, зокрема, любить глобальні, частково тому, що вони добре працюють із ISR). Однак, серед багатьох розробників програмного забезпечення там вони є голосом меншості, тому єдиний голос, який ви чуєте, - це "глобалі - це зло".
Розробка бази даних є однією з таких голосових ситуацій меншин. Інструменти, необхідні для роботи над DBA, є дуже потужними, і їх теорія не вкорінена в інкапсуляції. Для того, щоб простежити кожну швидку ефективність із своїх баз даних, їм потрібен повний безперешкодний доступ до всього, подібно до глобальних. Візьміть одну зі своїх чудовищних баз даних на 100 мільйонів рядів (або більше!), І ви зрозумієте, чому вони не дозволяють двигуну БД проводити жодних ударів.
Вони за це платять, дорога ціна. DBA змушені бути майже патологічними з їх увагою до деталей, оскільки їх інструменти не захищають їх. Найкраще, що вони захищають - це кислота або, можливо, зовнішні ключі. Ті, які не є патологічними знайти себе з повною плутанини таблиць , який повністю непридатним для використання, або навіть пошкоджені.
Не рідкість наявність програмних пакетів на 100 тис. Ліній. Теоретично будь-яка лінія програмного забезпечення може впливати на будь-яку глобальну програму в будь-який момент часу. У DBA, ви ніколи не знайдете 100k різних запитів, які можуть змінювати базу даних. Це було б нерозумно з увагою до деталей, необхідних для захисту вас від себе. Якщо у DBA є щось таке велике, вони навмисно інкапсулюють свою базу даних за допомогою аксесуарів, виконуючи проблеми, пов'язані з "глобальними схожими", і потім робитимуть якнайбільше роботи завдяки цьому "безпечнішому" механізму. Таким чином, коли поштовх приходить, навіть база даних людей уникає глобальних. Вони просто приходять з великою небезпекою, і є альтернативи, які настільки ж сильні, але не такі небезпечні.
Ви б хотіли ходити по розбитому склу або по красиво прометених тротуарах, якби всі інші речі рівні? Так, ви можете ходити по розбитому склу. Так, деякі люди навіть заробляють на життя, роблячи це. Але все ж просто нехай вони підмітають тротуар і рухаються далі!