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 2 von 9     12 34     Letzte »    
Benutzerbild von Phoenix
Phoenix
(Moderator)

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

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

  Alt 8. Mai 2005, 14:38
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#12

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

  Alt 8. Mai 2005, 14:42
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...
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#13

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

  Alt 8. Mai 2005, 14:48
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...
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#14

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

  Alt 8. Mai 2005, 14:50
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
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#15

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

  Alt 8. Mai 2005, 14:50
Genau so siehts aus ! Es gibt wenige Ausnahmen. Aber das hier :

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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#16

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

  Alt 8. Mai 2005, 14:51
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.
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#17

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

  Alt 8. Mai 2005, 14:52
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!
Felix K.
Zitat:
Siehst du diesen Park da unten?
Jeden Tag lernen sich leute kennen und verlassen einander, und du hast dein ganzes Leben Zeit darin zu gehen!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#18

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

  Alt 8. Mai 2005, 14:56
@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!)
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

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

  Alt 9. Mai 2005, 04:39
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...)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#20

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

  Alt 9. Mai 2005, 06:01
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...)
Du willst wohl Feuer mit Feuer bekämpfen? Was glaubst du wohl, was Form1 wäre? Eine nicht-globale Nicht-Variable?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 9     12 34     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 20:04 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