Einzelnen Beitrag anzeigen

IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Globale Variablen und OOP

  Alt 22. Jan 2007, 11:54
Vorab:
Der Fragesteller fängt - wie es aussieht - doch gerade erst an mit Delphi und OOP; und da würde ich ihm niemals anraten wollen, krampfhaft auf globale Variablen zu verzichten. Für einen Anfänger ist das nämlich ein Krampf (Datenmodule, eigene Klassen, etc.). Deshalb schrieb ich ja auch von meinem fehlenden Verständnis für eine Notwendigkeit, auf globale Variablen zu verzichten. Es gibt diese absolute Notwendigkeit nicht.

Zitat von sirius:
1. Durch globale Variablen kann man sich in einem ansonsten objekt-belasteten Programm sehr schnell Fehlerquellen bauen. Deswegen ist immer zuerst zu prüfen, ob die Variable nicht zu einer Klasse zugehörig ist.
2. Ein Datencontainer ist günstig, da du dadurch mehrere Instanzen dieses Containers initialisieren kannst, und dadurch mehrere "globale" Variablen gleichen Namens hast, die du dann auch brauchst. Aber eben nicht immer.
3. Für den Fall der Fälle, dass du ein und dieselbe Variable über mehrere Instanzen deiner Klasse haben willst gibt es Klassenvariablen
Alles korrekt.

Zitat von sirius:
4. Wenn das alles nicht hilft, nimm eine gloabel Variable.
Eben!

Zitat von Elvis:
Au weia...
Du musst dir überlegen wann und wo du welche Werte brauchst. Und ob bzw. wie sich diese Werte intuitiv in Klassen modellieren lassen.
Nach dem du jetzt weißt wo du sie brauchst musst du dir nur einen oder mehrere Instanzen wählen, die für die eine Referenz darauf halten, und denen man zum Bleistift im Konstruktor diesen Wert übergeben kann. (Muss nicht sein, read/write Properties sind auch OK )
Dein "Au weia" kannst du dir sparen, es sei denn, du kannst beweisen, die alleinige Weisheit gepachtet zu haben.

Wieso ist ständig von mehreren Instanzen die Rede??? Dass das alles fein geht, bestreitet doch niemand. Aber wer von mehreren Instanzen spricht, denkt eh nicht mehr an globale Variablen, oder?

Zitat von Elvis:
Denn sie sind
  1. von überall beschreibbar
  2. Es gibt keinen Setter, der dich über Änderungen informieren kann
  3. Müllen Code completion sinnlos zu, weshalb dich wohl jeder Benutzer deiner Units verfluchen wird.
Aber auch class properties und Singletons fallen unter "beschissen zu Skalieren oder wiederverwenden".
Du verzwirbelst deinen Code so sehr untereinander, dass du einzelne Teile nicht für etwas anderes benutzen kannst. Außer durch Copy'n Waste mit anschließendem Ändern.
Ist ja alles nicht falsch. Es ist aber für die meisten kleinen Projekte eines Newbies irrelevant. Der Fragesteller hier wird deine Erklärungen wahrscheinlich nicht einmal verstehen können.

Ich möchte den sehen, der angefangen ist zu programmieren, ohne globale Variablen benutzt zu haben.
Es ist m.E. unnötig (gerade am Anfang auch nahezu unmöglich), krampfhaft auf sie zu verzichten. Man kann es natürlich gerne versuchen, und das Begehren, gleich am Anfang der Karriere das "alles richtig" zu machen, ist ja auch lobenswert, aber es ist nicht zwingend notwendig. Mehr wollte ich nicht ausdrücken. Früher oder später wird sowieso jeder den Verzicht auf globale Variablen zu schätzen wissen und sie nach Möglichkeit vermeiden ... aber meistens nicht um jeden Preis.
  Mit Zitat antworten Zitat