Klassendesign
-
Hi Leutz,
ich hab mal wieder eine super Frage die ihr bestimmt schnell beantworten könnt
Also ich hab mehrere Klassen die einige private und public Elemente besitzen.
Jetzt hat sich mir die Frage aufgedrängt welches der folgenden Beispiele das schnelle ist?
Soll ich bei den Methoden ewig lange Parameterlisten pflegen :class test { public: int A; int B; int C; bool irgendwas(int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) bool irgendwas2(int n , int o, int p, int q, int r, int s, ) }
oder doch besser die Variablen aus den Parameterlisten als public in die Klasse setzen?
class test { public: int A, B, C; int d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s; bool irgendwas() bool irgendwas2() }
Ich tendiere zur zweiten Lösung , da ich die publics ja so außerhalb der Klasse im ständigen Zugriff haben kann um sie zu manipulieren. Desweiteren habe ich im Hinterkopf das jeder Parameter einer Methode/Funktion diese langsamer macht.
Das Beispiel hier ist sehr klein. Im orginal Code bin ich bis jetzt bei ca. 40 Methoden mit bis zu 9 Parametern pro Methode. Ich würde meine Klasse gern etwas optimieren bevor ich die nächsten Methoden einfüge. :p
Für jeden Tip der meine Klasse beschleunig währe ich euch super dankbar.
-
@Meister_aller_Fragen,
erstmal ist es kein guter Programmierstil auf
Variablen einer Klasse direkt zuzugreifen.
Wenn ich eine Klasse schreibe, sind alle
Variablen "protected". Und zu jeder Variable
existiert eine "Get" und nur wenn nötig
eine "Set" Funktion.
In deinem Fall würde ich jedoch eine Struktur mit
den ganzen Variablen erstellen und einen Zeiger
auf diese Struktur der Funktion übergeben.Also so zum Beispiel
typedef struct structTest { int A; int B; int C; int d; int e; int f; ... ... } structTest; class CTest { public: // Methoden structTest *GetIrgendetwas( void ); void SetIrgendetwas( structTest test ); protected: // Variablen structTest testData; };
Bye Peter.
-
Soll ich bei den Methoden ewig lange Parameterlisten pflegen :
Das steht im Widerspruch zur OOP. Wenn du also Klassendesign betreibst, dann sollten lange Parameterlisten dir immer suspekt vorkommen.
Jetzt hat sich mir die Frage aufgedrängt welches der folgenden Beispiele das schnelle ist?
Das ist die falsche Frage zum falschen Zeitpunkt.
oder doch besser die Variablen aus den Parameterlisten als public in die Klasse setzen?
Das ist keine alternative. Es sei denn Pest ist für dich eine Alternative zu Cholera.
Desweiteren habe ich im Hinterkopf das jeder Parameter einer Methode/Funktion diese langsamer macht.
Nicht die Funktion wird langsamer sondern wenn überhaupt nur der Aufruf. Aber wie gesagt. Du stellst hier die falschen Fragen zum falschen Zeitpunkt.
Im orginal Code bin ich bis jetzt bei ca. 40 Methoden mit bis zu 9 Parametern pro Methode.
40 Methoden mit bis zu 9 Parametern hört sich schwer nach einem Designproblem an.
Ich würde meine Klasse gern etwas optimieren bevor ich die nächsten Methoden einfüge
Du vergisst die zwei enstcheidenen Regeln der Optimierung.
Für jeden Tip der meine Klasse beschleunig währe ich euch super dankbar.
Soweit bist du noch nicht.
Wenn ich eine Klasse schreibe, sind alle
Variablen "protected".Das ist fast genauso schlecht wie eine public-Variable.
-
@Meister
Do eine Klasse gibt es einfach nicht !
Sag doch lieber einfach mal wsa das für eine Klasse sein soll und was für eine Aufgabe sie hat.
Dann fällt dir vielleicht sogar von alleine ein besseres Design ein.
Also ich hatte noch nie nie Funktion mit mehr als 4 Parametern, und selbst das sind dann meist Mathe Funktionen die halt 4 Punkte oder so brauchen
Schreib einfach mal was das ding soll ...