Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#23

Re: Globale Variablen - warum in der DP so verpönt?

  Alt 9. Mai 2005, 08:49
Grundsätzlich ist es möglich ohne globale Variablen auszukommen. Delphi selbst benutzt zwar auch globale Variable, aber auch diese könnte man vermeiden.

Zum Beispiel ist bei der VCL-Programmierung das zuerst kreirte Form immer das MainForm. Dementsprechend könnte man nach oop, Form2, Form3 als Public in Form1 deklarieren (und schon wären diese Globalen Weg). Dann gäbe es noch Form1. Wenn Borland die Objectorientierung bei Delphi aber zu 100% umsetzen würde wäre Form1 vermutlich im Public von TAppplicaiton. Und die Globale "Application" würde auch nicht wirklich benötigt werden weil es auch so ginge
TApplication.Create; und beim Klick auf schließen könnte die Instanz von TApplication sich selbst zerstören
Delphi-Quellcode:
procedure TApplication.CloseClick;
begin
  Self.Free;
end;
Leider (oder für manche zum Glück) hat Borland das nicht so umgesetzt. Jedoch ist es auch mit den aktuell in Umlauf befindlichen Delphis möglich das alle Globalen einfach Public-Variablen vom Mainform sind.

Zum Beispiel Pi etc.: Wer wirklich Objectorientiert arbeiten will kann auch solche Variablen ins Public des Mainforms packen.

Ohne Frage ist dies alles aber auch ein riesen Aufwand und für kleinere (Mini-)Projekte overkill. Wie schon mehrfach in dem Thread erwähnt sollte man deshalb abwägen wann man was verwendet.

Zur Ausgangsfrage: Keine(möglichst wenig) globalen Variablen weil:
- Ich habe ein Programm in dem sich ein Button befindet. Wenn dieser Button jetzt einen Darstellungsfehler hat finde ich den Fehler bedeutend schneller wenn ich weiß das sich dieser irgendwo innerhalb von "TKomischerButton" befindet. Würden jetzt aber alle funktionen innerhalb des Buttons auf globale Funktionen/Variablen zugreifen so müsste ich befürchten das ich mit der Beseitigung des Bugs im Button, Bugs in anderen Komponenten verursachen welche mit der falschen Globalen Variablen/Funktion richtig gearbeitet haben.
Auch Ableitungen von klassen sind nicht möglich/so einfach wenn ich keine Funktion überschreiben kann weil sie global ist...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat