![]() |
Re: globale Variablen?
Wenn er damit mein
Delphi-Quellcode:
fände ich das etwas übertrieben^^
if Form2.Checkbox1.checked then ...
|
Re: globale Variablen?
Zitat:
|
Re: globale Variablen?
Wird Form1.XXX von anderer Form/Unit aufgerufen, dann deutet dies auf schlechten Stil hin. Nicht mehr und nicht weniger. Die Units aind dann womöglich zu schlecht durchdacht. Globale Variablen werden dadurch schlecht, dass man sie während der Programmlaufzeit verändert, mehrfach neu deklariert eventuell sogar innerhalb einer Prozedur usw. Sind sie nur einmal vorhanden und werden sie nur gelesen, so dass man sie nicht laufend neu lesen muss, dann ist das soweit in Ordnung.
|
Re: globale Variablen?
Zitat:
|
Re: globale Variablen?
Was ist eine Standard-Instanz ? :shock: Solche Fragen über global usw. sind ja durchaus berechtigt. Das Thema hat sich durch OOP völlig gewandelt. Früher hatte man entweder innerhalb einer Prozedur eine Variable oder eben "global". Jetzt gibt es auch globale, die zur Verfügung stehen, sofern die betreffende Unit nur in USES drinsteht, also wie vorher auch. Zusätzlich gibt es aber jetzt Form-Globale, die für die Form gelten und die kann man mit Konstrukten wie Form1.XXX := 123 komplett aushebeln. Hinzu kommt dann noch sowas wie private, protected usw. Dann gibts Variable mit gleichen Namen, die sich je nachdem nicht mal ins Gehege kommen ! Trivial kann man das IMHO nicht mehr nennen.
|
Re: globale Variablen?
Damit meine ich das Formx, welches vom Formulardesigner automatisch angelegt wird. Wie oft sieht man imn Methoden den Zugriff auf diese Instant anstatt auf die aktuelle (Self).
|
Re: globale Variablen?
Zitat:
Zitat:
Was nicht heißt, dass ich selbst dir zustimme ;) . Globale Variablen lassen sich _immer_ ohne wirklichen Mehraufwand durch eine objektorientiertere Form ersetzen[*]. Dass sie bei Forms in jedem Fall auf schlechtes Design hinweisen, hast du ja schon erwähnt. [*] Um wieviel aussagekräftiger und sicherer ist (um bei deinem Beispiel zu bleiben) z.B. eine öffentliche, read-only Klasseneigenschaft als eine globale Variable mit dem darübergesetzten Kommentar "bitte nur lesen, NICHT SCHREIBEN!"? Und Schmankerl wie Lazy Loading gibt's kostenlos dazu. |
Re: globale Variablen?
Bin mal ein Programm durchgegangen. Es gibt tatsächlich eine Form, die im Stile von FormX.XXX auf Variablen einer anderen zugreift. Wie gesagt : ist schlechter Stil. Aber warum nehme ich das trotzdem in kauf ? Die eine Form hat ca. 10.000 Zeilen. Die zweite dient zum Suchen und braucht sowieso extra Form. Das ist wirklich ein Sonderfall. Die Suchform ist zu groß, um das mit Panelen usw. realisieren zu können. Jetzt muss ich den von der SuchForm gefundenen Datensatz an die Quasi-Hauptform (zumindest in diesem Programmteil) weiterreichen. Nur wie ? Das Ergebnis wird eben einfach weitergereicht. Diese Suchform ist allerdings auch abgeleitet und wird nicht nur einmal verwendet. Somit kann ich sie nicht einfach in die Form, die nur spezielle Sachen braucht integrieren.
wg. roter Kasten : nur-Lese-Eigenschaften als properties einzubauen ist am sichersten. Aber warum ? Nur weil ein Fehler direkt auftaucht. Das ist jetzt echt Zufall, aber ich habe fast den ganzen Tag damit zugebracht, um festzustellen, dass es sich nicht lohnt eine Programm-global gesetzte Property einzubauen. Zum Selbstzweck darf sowas nicht werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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