AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Globale Variablen und OOP

Ein Thema von TankWart · begonnen am 22. Jan 2007 · letzter Beitrag vom 23. Jan 2007
 
IngoD7

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

Re: Globale Variablen und OOP

  Alt 22. Jan 2007, 10: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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:27 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