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 8 von 9   « Erste     678 9      
new4toms
(Gast)

n/a Beiträge
 
#71

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

  Alt 11. Mai 2005, 09:16
Liebe DPler,

ich habe diesen Thread angezettelt, da ich ein recht umfangreiches Projekt betreue - mit globalen Variablen (und sogar GOTOs).

Die (noch nicht nachgezählt, dürften aber so rund 400 sein) sind jedoch in(zwischen/seit langem) in einer eigenen Unit "ausgelagert" und tragen Namen, die nicht gerade so aussehen:

i:=Integer;

sondern eher so:

iGthisM_id_42.

i steht für Integer, G für Global, thisM_id_42 für den Datensatz.

Was mich nach wie vor - an den "Global-Gegnern" irritiert:

Wie macht Ihr denn die Einstellung für ein Programm, das mehr als 150 Optionen - verteilt auf ca. 25 Forms anbietet? In jedem Form eine Einstellungsoption? In jedem Objekt ein eigenes "ReadFromIniFile"?

M.M.n. lassen sich größere Anwendungen nur mit globalen Variablen beherrschen. Bestes Beispiel: Die Registry von Windows selbst!

1:0 für die globalen Variablen, oder?

mfg
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#72

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

  Alt 11. Mai 2005, 09:29
Zitat von new4toms:
Wie macht Ihr denn die Einstellung für ein Programm, das mehr als 150 Optionen - verteilt auf ca. 25 Forms anbietet? In jedem Form eine Einstellungsoption? In jedem Objekt ein eigenes "ReadFromIniFile"?
Also ich fuer meinen Teil habe ein Optionsobjekt, in dem alle Optionen gesammelt sind. Dieses Optionsobjekt wird aber als globale Variable zur Verfuegung gestellt, also (IMHO) die ideale Kombination aus globalen Variablen und OOP

Zitat von new4toms:
M.M.n. lassen sich größere Anwendungen nur mit globalen Variablen beherrschen. Bestes Beispiel: Die Registry von Windows selbst!
Naja, egal wie man Optionen speichert, und egal wie man sie dann im Programm zur Verfuegung stellt, das sind 2 Paar Schuhe. Im Gegenteil: die Speicherung sollte unabhaengig von der Verwendung im Programm sein. Deshalb verwende ich dafuer auch eine zweite Klasse. So kann ich ohne Probleme von meinem eigenen Format mit cfg-Dateien auf ini-Files oder die Registry umstellen.

Zitat von new4toms:
1:0 für die globalen Variablen, oder?
Fuer dich. Andere sehen den Sieg fuer OOP-Konzepte, ich sehe es immer noch als 0:0. Einen eindeutigen Sieger kann und wird es nicht geben. Jeder verwendet das, mit dem er fuer sich besser klarkommt. Fuer dich moegen das Globals sein, fuer andere sind es Objekte. Das muss am Ende jeder fuer sich entscheiden.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#73

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

  Alt 11. Mai 2005, 09:35
Zitat von new4toms:
Wie macht Ihr denn die Einstellung für ein Programm, das mehr als 150 Optionen - verteilt auf ca. 25 Forms anbietet? In jedem Form eine Einstellungsoption? In jedem Objekt ein eigenes "ReadFromIniFile"?
Das klingt für mich nach einem zentralen Einstellungs-Objekt, am besten ein Singleton. Jede Option wird eine Property und es gibt eine Methode zum Lesen und eine zum Schreiben.

Zitat von new4toms:
1:0 für die globalen Variablen, oder?
Nö.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#74

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

  Alt 11. Mai 2005, 10:44
Moin!

Zitat von MrSpock:
2. OOP wird in der Regel in sicherheitskritischer Software nicht eingesetzt. Ich arbeite in Standardisierungsgremien, in denen wir uns darüber Gedanken machen. Viele der Großen wie Boeing, Lockheed Martin, EADS sind da eher zögerlich.
Hier sehe ich die Gründe eher darin, das die Systeme in denen diese sicherheitskritische Software umgesetzt wird, kein OOP können bzw. OOP nicht echtzeittauglich ist und daher nicht eingesetzt werden kann. Ich denke da z.B. Matlab/Simulink, wo man nicht alle Elemente des Matlab's einfach so für Echtzeit nutzen kann, da diese nicht dafür tauglich sind.

Auch bei Steuerung wie SPS, wird meistens kein OOP eingesetzt, da es meist über das Ziel hinaus schiesst. Ein komplettes OOP in eine solche SPS zu knallen - da kommt man auf keinen grünen Zweig mehr, da ist man mit einem kleinen nicht-OOP Code besser dran bzw. auch schneller und überschaubarer.

MfG
Muetze1
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#75

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

  Alt 11. Mai 2005, 10:45
Hallo Sanchez,

das haut dir mein Chef um die Ohren!
Ca 500 Variablen die global sein müssen, weil Sie von 50 Forms benutzt werden!
Dann singleton, property, procedure...
Mein Chef sagt:
Junge du spinnst. Machs einfach, machs mit globalen Variablen.
kostet nur ein zehntel!

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#76

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

  Alt 11. Mai 2005, 11:02
Hallo runger,

Der Unterschied zwischen dem Anlegen einer globalen Variable und einer Property im Singleton ist IMHO minimal. Das ist mir der Vorteil, die Methoden bei den Daten zu haben schon Wert.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#77

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

  Alt 11. Mai 2005, 12:56
Hallo Sanchez,

bitte gib mir mal ein minimales Codebeispiel damit wir von der gleichen Sache reden.
Für ein Property brauch ich:
-property selber
-Function zum setzen
-Variable selbst

zum Zugriff Zuweisung

für eine globale Variable (alle in der gleichen Unit. Nicht verteilt das wäre katastrophal):
-globale Variable

zum Zugriff Zuweisung

Für die Function brauche ich mindestens 5 Zeilen.

Und was bring das Ganze? Garnichts! Mein Code ist so übersichtlich wie deiner.

Wohlgemerkt: wenn jemand globale Variablen streut bin ich voll deiner Meinung, ansonsten nicht!

Rainer
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#78

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

  Alt 11. Mai 2005, 13:20
Wenn jede Property mit Funktionen ausgestattet wird, dann wirds natürlich länger. Sofern das nicht nötig ist, lasse ich die Property auf die Variable direkt zugreifen. Wenns nur um Einstellungen geht, dann kann ich auf Setter-Methoden verzichten.

Ein konkretes Beispiel ist eine Klasse, die mir beim Programmstart lokalisierte Strings lädt. Im Programm greifen mehrere Threads beliebig auf diese Strings zu. Da die Properties alle nur Lesbar sind, benötige ich keine Setter- bzw. Getter-Methoden. Andernfalls könnte in denen die Thread-Synchronisation ablaufen.

Delphi-Quellcode:
type
  TMenuMessages = class(TObject)
  private
    FString1: string;
    FString2: string;
    ...
    {1 Lädt die Übersetzungen }
    procedure LoadMessages;
  protected
    constructor Create;
    constructor CreateInstance;
    class function AccessInstance(Request: Integer): TMenuMessages;
  public
    destructor Destroy; override;
    class function Instance: TMenuMessages;
    class procedure ReleaseInstance;
  published
    property String1 : string read FString1;
    property String2 : string read FString2;
    ...
  end;
LoadMessages wird im Konstruktor aufgerufen. Den Klassenrumpf vom Singleton generiert mir dabei der Modelmaker. In Wirklichkeit ist der einzige Vorteil aber, dass ich die Laden-Methode bei den Daten habe.

Eine neue Variable würde in dem Fall eine neue Property und eine Zeile in LoadMessages bedeuten.
Theoretisch könnte ich LoadMessages auch noch automatisieren indem ich von TPersistent ableite und über alle Published-Properties iteriere. Allerdings setze ich in der den Default-Wert und müsste mir dafür noch was überlegen.

Für bessere Lösungen bin ich aber immer offen.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
runger
(Gast)

n/a Beiträge
 
#79

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

  Alt 11. Mai 2005, 16:19
Hallo Sanchez,

eins hast du geschafft, du hast mich neugierig gemacht.
Ich werde zumindest über die Art wie ich das Ganze realisiert habe
nachdenken!

Rainer
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#80

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

  Alt 11. Mai 2005, 19:56
Zitat von runger:
Für die Function brauche ich mindestens 5 Zeilen.

Und was bring das Ganze? Garnichts!

Nein. Ein einfaches Beispiel ist eine multi-threaded Anwendung (mistiges Denglisch, aber mir fiel grad kein deutsches Wort dafür ein ), die auf globale Variablen schreibend zugreift. Wenn du das mit einfachen globalen Variablen machst - viel Spaß beim Synchronisieren!
Auch müsstest du bei jedem Schreibzugriff prüfen, ob der Wert erlaubt ist. Da ist eine set-Funktion (oder eben eine Methode) wesentlich einfacher und auch weniger zu schreiben.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 8 von 9   « Erste     678 9      


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 05:47 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