Delphi-PRAXiS
Seite 2 von 9     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Globale Variablen - warum in der DP so verpönt? (https://www.delphipraxis.net/45538-globale-variablen-warum-der-dp-so-verpoent.html)

Phoenix 8. Mai 2005 14:38

Re: Globale Variablen - warum in der DP so verpönt?
 
Natürlich haben globale Werte ihren Sinn:

Man denke nur an Pi, die Eulersche Zahl, die Konstante c (Lichtgeschwindigleit)...
Okay, das sind alles Konstanten.

Globale Variablen... ja. Auch: Zum Beispiel die Gravitationskraft an der aktuellen Position. Die muss einmalig berechnet werden (daher Variable), ist dann aber zumindest für die Programmlaufzeit über konstant.

Aber schon das Beispiel ist sehr konstruiert, genauso konstruiert wie andere Anwendungsbeispiele mit global verwendeten Variablen.

Die richtige Lösung? Ganz einfach: Ein Objekt, welches die 'globalen' Werte zur Verfügung stellt. Zu holen als Singleton über eine Object-Factory. Es bietet sich z.B. der Name Globals an. Alle Variablen die man wirklich überall braucht werden als Properties dieser Klasse deklariert und gut ist: Keine Namensverwirrung mehr, kein versehentlicher falscher Zugriff mehr.

Robert_G 8. Mai 2005 14:42

Re: Globale Variablen - warum in der DP so verpönt?
 
Der einzige Anwenugsfall von globalen Variablen, der mir gerade einfällt sind die besprochenen Singletons.
Da es in Delphi32 keine statischen Felder/Properties gibt muss man also eine Instanz in einer globalen Variable halten.
Wobei diese natürlich im implementation-Teil deklariert wird und somit außerhalb der Unit dieser Klasse nicht zu sehen ist.

Sonst sehe ich keinerlei Sinn und Zweck hinter globalen Variablen. Ich lösche sie auch aus den Formularen raus. Diese Formularvariablen zu benutzen wäre schließlich genauso unsauber, wie eigene globale Variablen überall hinzuschleppen...

faux 8. Mai 2005 14:48

Re: Globale Variablen - warum in der DP so verpönt?
 
Mal eine (dumme) Frage:

Was versteht ihr genau unter globale Variable? Nur den im var im interface? Oder auch den private und pubic - Bereich des Formulars?
Also ich benutzen den var-Teil des Interfaces absolut NIE, denn das blockiert ja dann alle gleichnamigen Elemente und sieht außerdem hässlich aus...

runger 8. Mai 2005 14:50

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

was versteht ihr denn eigentlich unter globalen Variablen?

Folgende Vorgehensweise:
Es existieren vollständig gekapselte Eingabefenster ( mehr als 100). ( Machen wir so )
In den Fenstern werden alle Eingaben auf untere und obere Grenze und andere Dinge gecheckt.
Es gibt für jedes Formular eine ( für die Daten ) Eingangsprozedur und eine Ausgangsprozedur.
Das ist OOP in Reinkultur.
Wir benutzen globale Variable als Zwischenspeicher um unsere Daten nachher über einen pre und post Prozess ( Umwandlung in Hex ode rzurück ) an die Unterstation zu senden oder die Informationen zu holen.

Was ist daran unseriös? Blödsinnig ist natürlich diese globalen Variablen über sämtliche Units zu verteilen. Sie sind selbstverständlich in einer Unit konzentriert.
Dieses Verfahren ist absolut übersichtlich. Wir können unseren Code auch nach 10 jahren noch lesen.

Rainer

Hansa 8. Mai 2005 14:50

Re: Globale Variablen - warum in der DP so verpönt?
 
Genau so siehts aus ! Es gibt wenige Ausnahmen. Aber das hier :

Zitat:

Zitat von Robert_G
Wobei diese natürlich im implementation-Teil deklariert wird und somit außerhalb der Unit dieser Klasse nicht zu sehen ist.

Diese Quasi-Konstanten, wie die aus meiner INI, die brauche ich an allen Ecken und Kanten. Die kann ich doch nicht für andere Units unsichtbar machen. Oder wie ist das gemeint ? Also meine paar echt globalen Variablen, die sind so benannt, daß da eigentlich nichts passieren kann. Weiß nicht, ob es sich lohnt da überhaupt etwas dran zu machen.

Robert_G 8. Mai 2005 14:51

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

Zitat von faux
Mal eine (dumme) Frage:

Was versteht ihr genau unter globale Variable? Nur den im var im interface? Oder auch den private und pubic - Bereich des Formulars?

Ein Formular ist eine Klasse. "Variablen", die du dort deklarierst sind Felder und können aufgrund ihrer Verknüpfung zur Instanz dieser Klasse keine Probleme machen. Jedenfalls nicht die, die man sich aus Faulheit/Unwissenheit mit globalen Variablen einhandelt.

Demnach wären alle Variablen, die nicht Felder einer Klasse (oder eines Records :? ) bzw. lokale Variablen einer Methode sind, globale Variablen. ;)

Speedmaster 8. Mai 2005 14:52

Re: Globale Variablen - warum in der DP so verpönt?
 
Verstehe es auch nicht, in manchen fällen sind Globale Variablen wichtig.
Z.b. habe ich eine Logunit( Erstellt Log Dateien ), diese musste ich als Globale Variable behandeln um von überall zugreifen zu können.

Sonst braucht man sie nicht, und würden das Programm nur unübersichtlich machen!

Robert_G 8. Mai 2005 14:56

Re: Globale Variablen - warum in der DP so verpönt?
 
@SpeedMaster
Hier ist schon 2-mal das Wort Singleton gefallen. Das wäre eine Möglichkeit es zu lösen.
Die andere wäre, nach außen die Funktionalität über class methods anzubieten und eine Singleton nur innerhalb der implmentation zu halten.
(Denn ein normales Singleton kannst du zerstören!)

Pseudemys Nelsoni 9. Mai 2005 04:39

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

Verstehe es auch nicht, in manchen fällen sind Globale Variablen wichtig.
Z.b. habe ich eine Logunit( Erstellt Log Dateien ), diese musste ich als Globale Variable behandeln um von überall zugreifen zu können.
Und was hindert dich daran diese Variable in deine TForm1-Klasse zu packen und (wenn nötig) von ausserhalb der unit mit Form1.var drauf zuzugreifen? (Sofern unit1, im implementationsteil der anderen Unit...)

Robert_G 9. Mai 2005 06:01

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

Zitat von Pseudemys Nelsoni
Zitat:

Verstehe es auch nicht, in manchen fällen sind Globale Variablen wichtig.
Z.b. habe ich eine Logunit( Erstellt Log Dateien ), diese musste ich als Globale Variable behandeln um von überall zugreifen zu können.
Und was hindert dich daran diese Variable in deine TForm1-Klasse zu packen und (wenn nötig) von ausserhalb der unit mit Form1.var drauf zuzugreifen? (Sofern unit1, im implementationsteil der anderen Unit...)

:shock: Du willst wohl Feuer mit Feuer bekämpfen? Was glaubst du wohl, was Form1 wäre? Eine nicht-globale Nicht-Variable? :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:39 Uhr.
Seite 2 von 9     12 34     Letzte »    

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