![]() |
Globale Variablen, typisierte Konstanten
Bin zwar alt, aber neu hier im Forum und per Modem unterwegs :shock:
Gelegentlich habe ich hier Abfälliges zu globalen Variablen und typisierten Konstanten gelesen :pale: Was spricht dagegen? Falls es dazu bereits Threads geben sollte, antwortet doch bitte mit einem Link darauf! Vielen Dank! mfg |
Re: Globale Variablen, typisierte Konstanten
Moin,
globale Variablen sind böse weil... Das Programm wird unübersichtlich (wo kommt die Variable her, wo wird sie geändert, ...) Wenn man mit Klassen arbeitet und mehrere Instanzen einer Klasse anlegt und diese dann auf eine globale Variable zugreifen, dann passiert nur noch müll. Auch wenn man mal eben was ausprobieren will, sollte man gleich ordentlich programmieren und das bedeutet so wenig wie möglich mit globalen Variablen arbeiten. Eigentlich benötigt man gar keine globalen Variablen, man kann alles auch ohne lösen. typisierte Konstanten sind nicht von vorteil, weil man ihnen Werte zuweisen kann. Das sind dann keine Konstanten mehr. Sie sind nur von vorteil, wenn man sie als formale Paramter in Methoden benutzt, weil dann die Geschwindigkeit der Methodenaufrufe erhöht werden kann. MfG Thorsten |
Re: Globale Variablen, typisierte Konstanten
Zitat:
Delphi-Quellcode:
Counter ist hier im Scope der Prozedur gültig, der Wert bleibt aber über die Laufzeit der Prozedur hinaus erhalten.
procedure DoSomething;
const Counter: Integer = 0; begin //irgendwas machen Inc(Counter); end; |
Re: Globale Variablen, typisierte Konstanten
Moin,
ok das sehe ich ein. Es gibt durchaus sinnvolle Einsatzgebiete für typisierte Konstanten. Die Möglichkeit der Initialisierung im Deklarationsteil ist sehr sinnvoll. Ich denke ich war zusehr mit dem verteufeln von globalen Variablen beschäftigt, dass ich da einen Runt-Umschlag gemacht habe. Danke für deinen Hinweis . MfG Thorsten |
Re: Globale Variablen, typisierte Konstanten
Moin Chewie,
Zitat:
, was dann zur Folge hat, dass die Prozedur keinen definierten Zustand hat, wenn man sie aufruft. ;-) (es kann zumindest unübersichtlich werden den Anfangszustand zu kennen) |
Re: Globale Variablen, typisierte Konstanten
Ich würde mich mal zu allererst an folgende Richtlininien halten:
1. Konstanten nur für konstante Werte benutzen und nicht versuchen hieraus dann doch über Umwege eine Variable zu machen und sie zu verändern. 2. Variable nicht für Konstanten zu benutzen, die sich normalerwiese nie ändern. 3. Gültigkeitsbereiche so gering wie nöglich zu halten. In der Praxis sieht es aber dann etwas gemischter aus. Warum soll man keinerlei globalen Variablen / Konstanten benutzen ? :shock: Die Mwst. bspw. ist bei mir global, denn ich habe keine Lust in zig Prozeduren, diese als Parameter mitzuschleppen. Das gibt mehr Durcheinander, als es wert ist. Schleifenvariablen, oder soche, die wirklich nur kurz gebraucht werden niemals global definieren. Man stelle sich einmal ein i vor, das überall lokal als integer definiert ist, aber an einer Stelle ist keine lokale Definition vorhanden und das Programm greift von alleine auf ein global definiertes i zu !! Dann krachts aber mit Sicherheit irgendwann. :mrgreen: |
Re: Globale Variablen, typisierte Konstanten
Zitat:
Aber das ist nichts anderes wie eine private Variable einer Klasse: Wenn der Wert der Variablen nur die Prozedur selbst was angeht, dann muss dieser Wert nicht von außen übergeben werden. Sinn macht es z.B. beim Protokollieren in eine Textdatei, in der man mit einem Zähler z.B. die Zeilennummer reinschreiben kann. |
Re: Globale Variablen, typisierte Konstanten
Zuweisbare typisierte Konstanten
Zitat:
Globale Variable Variable sind Dinge, die vom Programm geändert werden. Hier verstößt die Verwendung Globaler Variablen gegen das Kapselungsprinzip, macht das Programm unübersichlicher. Verpacken in eine Singletonklasse und Zugriff über Getter und Setter erhöht die Übersichtlichkiet des Programms und verringert die Gefahr falscher Zugriffe auf die Variable. Die Formvarable (Form1 :TForm) sind globale Variable, man schaue sich einfach mal an, was passeiert, wenn von einer Form, die sich ein zugehöriges Datenmodul erzeugt, mehrere Instanzen exisistieren, und dann wundern. Globale Konstanten Hier will ich nicht unbedingt etwas gegen sagen, außer daß Verpacken in eine Singeltonklasse es eventuell leichter machen könnten, später mal Dinge daran transparent für den Rest des Programmes zu ändern. Z.B. wenn bei es bei Internationalisierung plötzlich nicht mehr einen Mehrwertsteuersatz gibt, und man das Programm einfach auf andere Sprachen (und damit Mehrwertsteuersätze) umschalten können will. Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 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 by Thomas Breitkreuz