![]() |
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. |
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... |
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... |
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 |
Re: Globale Variablen - warum in der DP so verpönt?
Genau so siehts aus ! Es gibt wenige Ausnahmen. Aber das hier :
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
Demnach wären alle Variablen, die nicht Felder einer Klasse (oder eines Records :? ) bzw. lokale Variablen einer Methode sind, globale Variablen. ;) |
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! |
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!) |
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Re: Globale Variablen - warum in der DP so verpönt?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr. |
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