AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Globale Variablen - warum in der DP so verpönt?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von new4toms · begonnen am 8. Mai 2005 · letzter Beitrag vom 13. Mai 2005
Antwort Antwort
Seite 3 von 9     123 45     Letzte »    
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#21

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

  Alt 9. Mai 2005, 06:24
jo Robert, klar ist Form1 eine globale Variable, aber das kann man wohl kaum ändern.
Ausserdem wäre damit sichergestellt, das man eben nur mit expliziter Angabe von Form1. auf die Variable zugreifen kann. (Ausserhalb der Klasse)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Delphi_Fanatic

Registriert seit: 24. Mär 2004
201 Beiträge
 
#22

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

  Alt 9. Mai 2005, 06:50
Natürlich machen globale Variablen Sinn !

Wenn eine Variable "Unit-übergreifend" benötigt wird und an jeder Stelle des Programms zu jederzeit
verfügbar sein soll - dann muss diese Variable einfach global sein.

Und dann erreicht man mit irgendwelchem Spielkram wie dem hier :

Zitat:
Die richtige Lösung? Ganz einfach: Ein Objekt, welches die 'globalen' Werte zur Verfügung stellt. Zu holen als Singleton über eine Object-Factory
... auch keinen wirklich spürbaren Vorteil.

Objektorientierte Programmierung in allen Ehren, aber bitte dort, wo es auch wirklich Sinn macht und spürbare Vorteile
bringt.

Und normalerweise treten dann auch keine ...

Zitat:
Namensverwirrung (...) versehentlicher falscher Zugriff (...)
... auf, denn es liegt in "der Natur der Sache", dass solche globalen Variablen in der Regel eben auch eine eindeutige
und unverwechelbare Bedeutung haben.

Aber natürlich sollte man eben keine Laufvariablen oder irgendwelche Zählvariablen oder Ähnliches global definieren.
  Mit Zitat antworten Zitat
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, 07: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
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#24

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

  Alt 9. Mai 2005, 07:56
Zitat von SirThornberry:
Zum Beispiel Pi etc.: Wer wirklich Objectorientiert arbeiten will kann auch solche Variablen ins Public des Mainforms packen.
Eine Variable hat hier den grossen Vorteil das man das leicht anpassen kann, sollte sich der Wert von Pi mal ändern

Nee, jetzt mal ehrlich: Pi ist eine Konstante, und die darf natürlich global in einer Unit deklariert sein. Ich packe alle Konstanten immer in entsprechende Units und wo ich die Konstanten brauche nehm ich die Unit zur Hand.

Aber mir fällt ganz ehrlich kein einziges Beispiel ein, wo es korrekt wäre eine globale Variable herzunehmen. Und ich bin da schon eine ganze Weile am grübeln. Nichts was mir einfällt ist eine globale Variable. Die ganzen Werte haben irgendwie immer einen Zusammenhang und gehören von daher in ein Objekt.

Zur Implementierung von Singletons: Ich lege solche Objekte immer in unitlokalen Variablen ab. Daher kann ich die auch im finalization-Teil aufräumen wenn das Programm beendet wird und notfalls sogar im initialization bereits erzeugen wenn sie immer da sein müssen. Im Normalfall werden die Objekte aber erst beim ersten Zugriff erzeugt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

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

  Alt 9. Mai 2005, 07:59
Ich weiß, pi war ein schlechtes Beispiel, ich meinte eigentlich den Fall mit der Gravitation (was hier in dem Thread irgendwo erwähnt war), nur wusste ich leider nicht wie man das schreibt und habs auch nicht mehr gefunden. Aber: Pi ist zwar eine konstante aber wenn man wöllte könnte man diese Trotzdem im MainForm oder in "TConstants" deklarieren und dort im Create staatich zuweisen. (wobei ich bei Konstanten die Globalisierung noch einsehe)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#26

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

  Alt 9. Mai 2005, 08:30
Der weitgehende Verzicht auf globale Variablen alleine erhöht kaum die Qualität eines Programms. Die Eliminierung von globalen Variablen, die gar keine sind, ist das Ziel - getreu dem Grundsatz des information hiding. Wer dabei über das Ziel hinaus schießt, der liegt auch daneben. Gäbe es keine globalen Variablen, dann müsste man sie erfinden.

Wer mit Delphi qualitativ hochwertige Programme erstellen will, der kommt um das Studium einschlägiger Fachliteratur nicht herum. Alleine das Kapitel "Sichtbarkeit von Variablen in prozeduralen Sprachen mit Blockkonzept" - dazu zählen alle Pascal Dialekte, aber auch Ada - verschafft wertvolles Grundlagenwissen und erübrigt manchen unfreiwillig komischen Beitrag - was aber manchmal auch wieder schade wäre.

Keiner muss sich einem Hochschulstudium der Informatik unterziehen, nicht einmal ein FH-Studium ist notwendig, um vernünftige Programme zu schreiben. Wer aber - als Gegner oder Befürworter von globalen Variablen - auch nach etlicher Zeit glaubt Maximal-Forderungen durchsetzen zu können, der braucht dringend Hilfe.

Grüße vom marabu
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#27

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

  Alt 9. Mai 2005, 08:42
Was DU als 'Unit Globals' implementiert hast, ist ja nichts anderes als ein Datenmodul. Nur eben als Unit. Die ganze Diskussion pro/contra OOP ist sowieso irgendwann überflüssig, weil ja OOP nichts anderes als eine andere Sichtweise ein und derselben Geschichte ist.

Ob ich nun eine Methode "foo.bar (huhu)" habe, oder eine Prozedur "foo (bar, huu)" ist ein und das Selbe. Aber mit OOP (und dieser Verberbungsgeschichte) bekomme ich Struktur in meine Anwendung und werde gezwungen, semantisch zusammenhängende Abläufe und die Elementaroperationen auf den Daten auch in eine Unit/Klasse zu schreiben.

So gesehen, ist C das Grauen, Pascal mit dem Unit-Konzept schon besser, Modula noch ein wenig restriktiver, Delphi schon ganz brauchbar, und C#/Java total OOP-lastig. Wie weit man sich an C (C steht für Chaos, he he) oder Java gebunden fühlt, ist eine Glaubensfrage.

Ich persönlich finde, dsa Delphi einen gesunden Mittelweg beschreitet, weil es den Spagat von Chaos zu OOP schafft, und mir trotzdem meine Freiräume lässt. Alles eine Frage des Glaubens.

Was man aber unabhängig von seinem Glauben machen sollte, ist anständigen, rechtschaffenen (ja ja und vaterlandsliebenden, regierungstreuen, chrr..chrr..) Code zu schreiben, der jedem Review standhält. Wenn man so diszipliniert ist, bekommt man auch ASM-Code mit globalen Variablen so hin, das er noch nach 10 Jahren lesbar ist. Alles eine Frage des Könnens.

Na denn. Nobody is perfect.

@Marabu: Dein Beitrag kam gerade eben, aber trifft ins Schwarze!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#28

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

  Alt 9. Mai 2005, 11:24
In einer meiner Anwendungen wird zur Startzeit eine Pfad-Angabe aus einer INI eingelesen, die dann zur kompletten Laufzeit immer wieder für Datenbankverbindung verwendet wird.

Und jetzt hätte ich gerne ein gutes Argument, warum ich das nich mit ner globalen Variable machen soll
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#29

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

  Alt 9. Mai 2005, 11:47
Hi,

bei mir kommen die Einstellungen, die ich aus den INIs les, in ne eigene Klasse, welche die Variablen hält. Die Klasse kümmert sich auch ums speichern, laden usw.
Auf ein solches Objekt und dessen Eigenschaften kann ich auch von überall zugreifen
Aber wie hier nun schon x-mal erwähnt: kommt auf den Einzelfall an.

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#30

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

  Alt 9. Mai 2005, 11:52
Joa....

Hab nämlich irgendwie keine Lust für gerade mal 2 Nur-Lesen Variablen auch noch Klasse anzulegen ...
Die Variablen werden wärend der Laufzeit noch nichmal geändert -g-
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 9     123 45     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz