An jede Klasse Variablen Pointer oder extern
-
Moin Moin,
wollte mal fragen, wie ihr es macht, wenn ihr eine "globale" Variable habt die in verschiedenen Klassen immer mal wieder gebraucht wird. Ist in main() definiert.Nehmt ihr eine "extern" Variable, übergebt den Variablen Pointer immer im Konstruktor wenn die Klasse sie benötigt oder aber Übergebt sie immer nur an Funktionen wo sie letzten endes gebraucht wird?
MfG
-
Wenn es threadsicher sein soll, schreib ich einfach eine Klasse mit statischen Gettern und Settern, welche in der Implementation in der Quelldatei, gesichert über Mutex, auf Variablen zugreifen, welche global, maskiert durch einen anonymen Namespace, definiert sind.
-
Mit einzelnen Variablen - sofern jetzt triviale Typen wie Integers, Floats oder Strings gemeint sind - hab' ich solche Fälle eigentlich nicht.
Wenn dann mit irgendwelchen Klassen. Und in diesen Fällen gibt es auch nicht "die" universelle Lösung. Globale Variablen vermeide ich grundsätzlich. Und ob es besser ist Dinge einer Instanz mitzugeben (über Konstruktor oder Setter), oder sie beim Aufruf diverser Funktionen/Memberfunktionen jedes mal als Parameter mitzugeben, das kann man so pauschal schwer beantworten.
Ich würde sagen: wenn es sinnvoll möglich ist bei jedem Funktionsaufruf ein anderes Objekt zu übergeben, dann sollte man es so machen. Wenn das nicht sinnvoll möglich ist, die Instanz also an die andere Instanz "gebunden" ist, dann sollte man es besser als Konstruktor-Argument übergeben.
Also noch allgemeiner gesagt: überleg dir was in deiner Problemdomäne möglich ist bzw. nicht möglich ist, was Sinn macht bzw. was nicht Sinn macht. Und dann modelliere dein Programm so dass mögliche und sinnvolle Dinge möglich sind, und unmögliche bzw. unsinnige Dinge nicht möglich sind.
-
Danke euch!
Stimmt, "statische" Klasse
OOP
Für mein belangen wohl das beste.
-
Scarrr schrieb:
Stimmt, "statische" Klasse
OOPDas ist weder ein gutes Beispiel für OOP, noch generell eine gute Idee. Statische Membervariablen haben genau die gleichen Probleme wie globale Variablen. Vermeide beide.
-
Ich kann mich auch nicht erinnern irgendwas geschrieben zu haben, das man in Richtung "statische Klasse = gute Idee" auslegen könnte.
Ich hab' sogar geschrieben dass ich globale Variablen grundsätzlich vermeide. Ob die dabei dann hinter Gettern und Settern weggekapselt sind ist mir dabei ziemlich egal - ich mag beides nicht.
-
hustbaer schrieb:
statische Klasse = gute Idee
Hä, du magst statische Klassen?

Das bezog sich wohl auf die Antwort von Youka.
-
Zumindest das "Danke euch!" gilt wohl auch mir - es sei denn Youka ist seit neuestem König oder sowas.