Globale Variablen verhindern, Ideen gesucht
-
also auf gut Deutsch wie mache ich das folgende schner, ohne alles doppelt zu machen?
void SteelLining::Jacobsen_inertia(Variablen &v){ v.j1=v.b1*v.h1*pow(v.h1/12,2); v.j2=v.j2+v.j1; v.f1=v.b1*v.h1; v.f2=v.f2+v.f1; v.h2=v.h2+v.h1; v.e1=v.h2-v.h1/2; v.s1=v.f1*v.e1; v.s2=v.s2+v.s1; v.j1=v.s1*v.e1; v.j2=v.j2+v.j1; }
-
-- Kannst du deine Variablen nicht zu kleineren Gruppen zusammenfassen?
-
Und wo liegt hier jetzt noch gleich der Vorteil zu den globalen Variablen
?Das Stichwort heißt Abstraktion. Keine deiner Rechenschritte braucht alle 40-50 Variablen. Falls doch dann musst du die Schritte weiter zerlegen

-
Warum machst du nicht alles in eine Klasse ?
Dann hast du alle Variablen in deinen Funktionen zur verfügung ....
-
Jan++ schrieb:
Warum machst du nicht alles in eine Klasse ?
Dann hast du alle Variablen in deinen Funktionen zur verfügung ....Inwiefern macht das den Code besser?
So wie der Stand jetzt ist kannst du getrost bei den globalen Variablen bleiben. Die vorgeschlagenen Alternativen machen den Code kein Stück besser.
-
Ich würde statt Globalen Variablen ein Singelton Objekt benutzen. Ist meiner Meinung nach eine Spur gekapselter

http://de.wikibooks.org/wiki/C%2B%2B-Programmierung:_Entwurfsmuster:_Singleton
-
Welchen Vorteil sollte ein Singleton haben? Erläutere das "gekapselter" bitte.
-
Was ist jetzt das Problem?
Wenn du die 50 Variablen brauchst, dann musst du die auch hinschreiben, egal ob nun in einem Array, in einer Klasse, in einem struct, als globale Variablen, oder sonst wo.
Was nun davon am sinnvollsten ist, kannst nur du wissen, da du ja keine Info's raus gibst was du genau machen willst.
Wenn es dir zu viel Tipparbeit ist, hol dir ne Sekretärin.
-
2 DInge, wnen ich die Variablen sos ehe:
1. Lokalitätsprinzip: deklariere Variablen erst da wo du sie brauchst. Mache schon gar nichts global, was du nicht über mehrere Funktionen hinweg brauchst. Mache nie etwas global, was du genausogut als Funktionsparameter übergeben könntest.
2. Bitte, Bitte, Bitte: nimm sprechende Variablennamen. Kleiner Test: sag mir aus dem Stand, ohne auf den Code zu schauen, was hi,qq und wert speichern.
-
@all erstmal ja die Schritte oben müssen so sein, es gehrt zu einer Iteration, die ein Gleichungssystem über das Newtonverfahren killt. Das ist nur ein Mini-Ausschnitt, da das Grundproblem den Ramen hier vollständig sprengen würde.
Auf dem Blatt Papier ist es alles mathematisch richtig gelöst und bedarf wirklich jeder Variable.
@otze Sprechende Variablennamen sind natürlich sinnvoll, aber ich habe mich an die Vorlage des Gleichungssystems gehalten, um bei der Rechenseite auf keinen Fall Flüchtigkeitsfehler zu provozieren.
Frage bezgl. Variablen einfach in die Klasse der Funktion werfen:
Kann ich einfach die 50 Teile als pulic reinwerfen? Ohne ein Objekt mit get,set geht das doch gar nicht, oder?
Wenn ich mal wieder doof bin würde mich ein kleines Beispiel sehr freuen!
Gruß
Alex
-
die kannst du einfach als public reinschreiben, aber dann biste auch wieder bei der struct
greetz KN4CK3R