Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Programmierdogmata (https://www.delphipraxis.net/174155-programmierdogmata.html)

Furtbichler 8. Apr 2013 13:07

AW: Programmierdogmata
 
Application ist ein ebenso zweifelhaftes 'gutes' Beispiel gegen die Verwendung von globalen Variablen. Im Kontext einer VCL-Anwendung ist das Application-Objekt existentiell, d.h. Abhängigkeiten eines VCL-Objektes vom Application-Objekt sind systemimmanent.

Nur die Umsetzung des globalen/singulären Zugriffs sollte eben -wie von Sir Rufo beschrieben- über ein Singleton-Pattern laufen.

Andere Beispiele für den globalen Kontext sind z.B. Benutzereinstellungen (die 'INI-Datei') oder auch der Bildschirm und generell die Hardware, wobei der globale und exklusive Zugriff nicht in allen Bereichen notwendig ist.

p80286 8. Apr 2013 14:22

AW: Programmierdogmata
 
Zitat:

Zitat von sx2008 (Beitrag 1210560)
Eine Anwendung aus dem Bereich der Logistik soll "mandantenfähig" gemacht werden; d.h. es soll mit mehreren Mandanten statt bisher nur einem umgehen können.
Das Problem war aber dass die zum Mandanten gehörenden Daten in einem globalen Objekt gespeichert wurden
Delphi-Quellcode:
var
  AdrMandant : TAdresseMandant; // enthält Name, Anschrift, Tel, EMail, Fax, Kontoverbindung, Umsatzsteuernr,...
Auf diese globale Objekt greifen aber hunderte Units zu.

Wenn man die Mandantendaten ändert weil man z.B. eine Rechnung drucken möchte, dann hat das globale Auswirkungen auf die ganze Anwendung.
Letztendlich wurde die globale Variable vernichtet und vielen Klassen wird jetzt das Mandantenobjekt von Aussen übergeben.

Auch wenn ich noch nicht restlos von der Überflüssigkeit globaler Variablen/Constanten.. überzeugt bin, so ###### kann doch kein Mensch/Programmierer sein?
Spätestens beim Einsatz der zweiten Unit, wird das doch so komplex, daß man eine saubere Schnittstelle braucht und sich nicht auf "das steht da irgendwo in der..." zurückziehen kann.

Eben darum sollten ja auch die Daten von der Oberfläche getrennt sein.

Ich bin viel zu faul (je weniger Aufwand für ein Ergebnis desto besser) als daß ich mir so etwas antuen würde.

Gruß
K-H

Uwe Raabe 8. Apr 2013 14:33

AW: Programmierdogmata
 
Zitat:

Zitat von p80286 (Beitrag 1210608)
Auch wenn ich noch nicht restlos von der Überflüssigkeit globaler Variablen/Constanten.. überzeugt bin, so ###### kann doch kein Mensch/Programmierer sein?

Meistens entsteht so etwas schleichend. Am Anfang waren die einzelnen Adressfelder vielleicht noch einzelne globale Variablen (das Programm stammt vielleicht noch aus Turbo Pascal 1.0 Zeiten). Dann fasst man das als Record zusammen, später als Klasse. Dann kommt eine Unit nach der anderen dazu und man hat gerade überhaupt keine Zeit das richtig umzubauen. Irgendwann ist dann der nötige Aufwand schon happig, weil man so viele Units anfassen muss.

Manchmal muss man sich einfach selbst zwingen, solche Dinge rechtzeitig zu bereinigen. Unterm Strich spart man dann doch wieder Zeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:26 Uhr.
Seite 4 von 4   « Erste     234   

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