Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Class Var vs Var (https://www.delphipraxis.net/180411-class-var-vs-var.html)

Bjoerk 19. Mai 2014 09:50

AW: Class Var vs Var
 
Dein TGlobalix Beispiel ist sozusagen ja nur die akademische Variante von proceduralen globalen Variablen. Globale Klassen sind eher sinnvoll für Klassen vom "Typ SysUtils". Globale Variablen haben mich mal fast meine Existenz gekostet. Ernsthaft, ich war kurz vom Hinschmeißen. Mein Code (ca. 250.000 Zeilen) war schlicht nicht mehr wartbar. Hat ein Jahr gedauert bis ich die eliminiert hatte (Ohne Christian und Detlef hätte ich’s wohl überhaupt nicht geschafft). Seither versuche ich mich im Wesentlichen an die "Guinnes Directive" zu halten: "Variablen so weit verstecken wie möglich". :)

Stevie 19. Mai 2014 11:55

AW: Class Var vs Var
 
Zitat:

Zitat von Perlsau (Beitrag 1259249)
Du meinst, globale Variablen wären in jedem Fall und unter allen Umständen "schlecht" und in allen Fällen grundsätzlich vermeidbar? Wenn ja, wozu gibt's die dann überhaupt? Im großen & ganzen stimme ich den zahlreichen Plädoyers gegen den Einsatz globaler Variablen durchaus zu, aber doch nicht grundsätzlich :?

Ich wage, zu behaupten, dass es theoretisch ganz ohne geht - allerdings steht dem meist die Praxis (und bestehender Code) gegenüber und in manchen Fällen ist es einfacher und pragmatischer, eine globale Variable zu benutzen, anstatt das ganze System von links auf rechts zu krempeln. Dennoch sollte man manchmal zweimal drüber nachdenken, ob sich das dargestellte Problem nicht anders lösen lässt.

Sir Rufo 19. Mai 2014 12:19

AW: Class Var vs Var
 
Und nicht globale Variablen und globale Abhängigkeiten vermischen.

Globale Variablen haben als Teilaspekt auch die globale Abhängigkeit, aber zudem auch noch weitere Nebeneffekte, wie das unkontrollierte und ungeschützte Verändern der Werte.

Mit den Abhängigkeiten kann man sich noch arrangieren, das Verändern kann einem das Leben schwer machen (warum ist denn da jetzt 42 drin :shock:)

Dejan Vu 19. Mai 2014 12:33

AW: Class Var vs Var
 
Zitat:

Zitat von Stevie (Beitrag 1259321)
Ich wage, zu behaupten, dass es theoretisch ganz ohne geht

Also ganz ohne globale Konstanten/Variablen/Abhängigkeiten wirst Du eine Anwendung denn doch nicht hinbekommen. I/O z.B. wird kaum ohne gehen. Du kannst das zwar als Wrapper kapseln und per DI auflösen, aber irgendwer muss ja von außen die Abhängigkeit injizieren, und so hat der äußerste Anwendercode eben diese globale Abhängigkeit, spätestens der Wrapper selbst.

Die Frage, die sich da natürlich stellt ist die: Wenn nur eine einzige Klasse etwas globales verwendet (weil es im Framework nun einmal global ist), gilt das dann? :stupid:

Sir Rufo 19. Mai 2014 13:28

AW: Class Var vs Var
 
Also ohne globale Variablen (die da)
Delphi-Quellcode:
interface

var
  GlobalBadVar : TSomeType;
ja, darauf kann man komplett verzichten.

Globale Konstanten sind egal (die ändern sich ja eh nicht)

Ohne Globale Abhängigkeiten -> NEIN
Denn selbst mit DI hat man einen globalen ServiceLocator und damit schon mal eine Abhängigkeit.

Allerdings hat man eben nur eine und mehr sollten es im Idealfall nicht werden. Und diese Abhängigkeit sollte auch sehr flexibel sein.

Aber du hast schon damit Recht, man braucht halt einen Nagel wo man alles dran aufhängt, sonst baut man ein Luftschloß ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz