Ich würde es etwas anders sehen: "Global Variable" ähnliches Verhalten ist ein Preis, den Datenbankadministratoren (DBAs) zahlen, weil es ein notwendiges Übel ist, um ihre Arbeit zu erledigen.
Das Problem mit globalen Variablen ist, wie mehrere andere betont haben, nicht willkürlich. Das Problem ist, dass ihre Verwendung das Verhalten Ihres Programms immer weniger vorhersehbar macht, da es schwieriger wird, festzustellen, wer die Variable auf welche Weise verwendet. Dies ist ein großes Problem für moderne Software, da moderne Software in der Regel viele, viele flexible Aufgaben ausführen muss. Es kann im Laufe eines Laufs Milliarden oder sogar Billionen komplexer Manipulationen des Zustands ausführen. Die Fähigkeit, wahre Aussagen darüber zu beweisen, was diese Software in diesen Milliarden oder Billionen von Operationen bewirken wird, ist äußerst wertvoll.
Bei moderner Software stellen alle unsere Sprachen Tools zur Verfügung, die dies unterstützen, z. B. die Kapselung. Die Entscheidung, es nicht zu benutzen, ist unnötig, was zu der Mentalität "Globals are evil" führt. In vielen Bereichen der Softwareentwicklung sind die einzigen Personen, die sie verwenden, Personen, die nicht wissen, wie man besser codiert. Dies bedeutet, dass sie nicht nur direkt Probleme bereiten, sondern auch indirekt darauf hinweisen, dass der Entwickler nicht wusste, was sie taten. In anderen Regionen sind Globals völlig normal (eingebettete Software liebt insbesondere Globals, zum Teil, weil sie gut mit ISRs zusammenarbeiten). Unter den vielen Software-Entwicklern sind sie jedoch die Minderheitsstimme, sodass die einzige Stimme, die Sie hören, "Globale sind böse" ist.
Die Datenbankentwicklung ist eine dieser Sprachprobleme. Die Tools, die für die Ausführung der DBA-Arbeit benötigt werden, sind sehr leistungsfähig, und ihre Theorie basiert nicht auf der Kapselung. Um jeden Augenblick der Performance aus ihren Datenbanken herauszuholen, benötigen sie uneingeschränkten Zugriff auf alles, ähnlich wie bei Globals. Nutzen Sie eine ihrer riesigen Datenbanken mit 100 Millionen Zeilen (oder mehr!), Und Sie werden verstehen, warum sie nicht zulassen, dass ihre DB-Engine Schläge aushält.
Sie zahlen dafür einen Preis, einen lieben Preis. DBAs müssen mit ihrer Liebe zum Detail fast pathologisch sein, weil ihre Tools sie nicht schützen. Das Beste, was sie im Hinblick auf den Schutz haben, ist ACID oder möglicherweise Fremdschlüssel. Diejenigen, die nicht pathologisch sind, befinden sich in einem völligen Durcheinander von Tabellen, das völlig unbrauchbar oder sogar korrupt ist.
Es ist nicht ungewöhnlich, Softwarepakete mit 100.000 Zeilen zu haben. Theoretisch kann sich jede Zeile in der Software zu jedem Zeitpunkt auf jedes globale Element auswirken. In DBAs finden Sie nie 100.000 verschiedene Abfragen, die die Datenbank ändern können. Es wäre unvernünftig, mit der Liebe zum Detail vorzugehen, um Sie vor sich selbst zu schützen. Wenn ein DBA über so etwas Großes verfügt, kapselt er seine Datenbank absichtlich mit Accessoren, umgeht die "globalen" Probleme und erledigt dann so viel Arbeit wie möglich über diesen "sichereren" Mechanismus. Wenn es darum geht, Druck auszuüben, meiden sogar die Datenbankmitarbeiter globale Zusammenhänge. Sie sind einfach mit einer großen Gefahr verbunden, und es gibt Alternativen, die genauso stark, aber nicht so gefährlich sind.
Möchten Sie lieber auf Glasscherben herumlaufen oder auf gepflegten Gehsteigen, wenn alle anderen Dinge gleich sind? Ja, Sie können auf Glasscherben gehen. Ja, manche Leute verdienen sogar ihren Lebensunterhalt damit. Aber lass sie doch einfach den Bürgersteig fegen und weiterziehen!