Global Variablen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
computatrum physicus
User
Beiträge: 8
Registriert: Samstag 29. Juli 2017, 16:37

Warum sagen so viele Leute ,dass man Globale Var. vermeiden solle?
BlackJack

Weil es wahr ist. Physiker sind aber ausgenommen, die können eh nicht programmieren. *wegduck*
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

weil globalen Variablen es extrem schwierig machen, den Zustand eines Programms nachzuvollziehen. Unter Python ist es so, dass wenn du `global` im Quelltext siehst, zu 99,9% davon ausgehen kann, dass das ganz unsauber programmiert ist.

Gruß, noisefloor
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

computatrum physicus hat geschrieben:Warum sagen so viele Leute ,dass man Globale Var. vermeiden solle?
Stell die Frage mal andersherum: Welche Vorteile hast du durch die Verwendung von globalen Variablen?

Und denk bitte bei der Antwort daran, dass du einzelne Funktionen vielleicht auch mal in anderer Reihenfolge oder einem anderen Kontext aufrufen möchtest als du dir das zuerst gedacht hast.
BlackJack

Globale Variablen machen den Code schwerer verständlich weil man nicht mehr Funktionen einzeln betrachten kann sondern immer schauen muss welche Funktionen noch und in welcher Reihenfolge die globale Variable(n) benutzen oder verändern. Man koppelt damit Funktionen auf eine intransparente Art und Weise.

Funktionen kann man deshalb auch schlecht isoliert testen, weil man immer auch Zustand ausserhalb der Funktion berücksichtigen muss.

Das macht die Fehlersuche unnötig schwerer.

Durch die Abhängigkeit zu globalen Variablen kann man Funktionen auch nicht so einfach in ein anderes Modul verschieben oder wiederverwenden.

Funkionen die globale Variablen verwenden, kann man nicht sicher nebenläufig verwenden.
Antworten