global oder nicht global

11/11/2008 - 00:30 von Thomas Steinbach | Report spam
Hallo NG,

Wenn ich mir die (win32) Templates beim VS anschaue,
sehe ich globale Variablen

Wie haltet ihr das?
Vermeidet ihr alle globalen Variablen und schreibt das um?
Typischerweise wird in InitInstance() das hInstance einer
globale Variable zugeordnet.

Wie haltet ihr das dann mit dem Windows Handle fuer
die MessageLoop.

Speichert ihr die auch global (z.B. in der Funktion
InitInstance und verwendet diese Globale dann wieder
im Main Message Loop und wenn gebraucht oder
fuehrt ihr das HWND immer mit?

Oder wie sicher, bzw. unsicher sind globale Variablen?
Mich irritiert halt ein wenig das vom VS das global
vorgeschlagen wird und nicht gleich ohne globale
gemacht wird.

Bin da etwas verunsichert, da man doch eigentlich immer
lernt globale Vars zu vermeiden... hmmm Zumindest war
das vor einigen Jahren noch die gaengige Meinung. Aber
kann ja auch sein das mit heutigen Speicherverwaltungs-
techniken und modernen Compilern egal ist und man
davon abgekommen ist.


Thomas
 

Lesen sie die antworten

#1 Edzard Egberts
11/11/2008 - 11:37 | Warnen spam
Thomas Steinbach schrieb:

Wenn ich mir die (win32) Templates beim VS anschaue,
sehe ich globale Variablen

Wie haltet ihr das?
Vermeidet ihr alle globalen Variablen



Nein, ich fange schon damit an, dass ich das VS vermeide! :o)

Außerdem programmiere ich C++, da braucht man keine globalen Variablen,
sondern das nennt sich "Singleton" (nicht zu verwechseln mit
"Klingelton" ;o).

Wie haltet ihr das dann mit dem Windows Handle fuer
die MessageLoop.



Das erledigt meine FLTK-GUI - es ist wirklich überflüssig, sich
heutzutage noch dieses ganze Geraffel direkter Windows-Programmierung
anzutun. Selbst MS mag die eigene API nicht mehr -> .NET

Oder wie sicher, bzw. unsicher sind globale Variablen?



Worauf beziehst Du "Sicherheit"? Wenn man alles richtig macht, kann man
globale Variablen genau so verwenden, wie jede andere Programmiertechnik
auch. Bei GUI-Programmierung mit Win-API gibt es so viele bessere
Möglichkeiten, sich in den Fuß zu schießen, dass die Probleme globaler
Variablen vernachlàssigt werden können.

Mich irritiert halt ein wenig das vom VS das global
vorgeschlagen wird und nicht gleich ohne globale
gemacht wird.



Naja, dass die MS-Programmierung vorbildlich ist, halte ich für ein
Gerücht der PR-Abteilung.

Aber
kann ja auch sein das mit heutigen Speicherverwaltungs-
techniken und modernen Compilern egal ist und man
davon abgekommen ist.



Nein, das war noch nie das Problem - Maschinen ist Spaghetti-Code egal,
solche Einschrànkungen dienen nur dazu, Fehler des Programmierers zu
verhindern. Außer, dass es irgendwann unübersichtlich wird, spricht
nichts gegen die Verwendung globaler Variablen. Gerade bei kleinen
Programmen kann das ein ganz pragmatischer Ansatz sein, um schnell etwas
zu programmieren.

Gruß,

Ed

Ähnliche fragen