Ich schrieb vor kurzem eine Klasse, die B-Spline-Kurven rendert. Diese Kurven sind durch eine Anzahl von Kontrollpunkten definiert. Ursprünglich hatte ich gedacht acht Kontrollpunkte zu verwenden, so habe ich eine Konstante der Klasse, etwa so:Ist es besser, Klassenkonstanten in Datenmembern oder in Methoden zu speichern?
class Curve
{
public:
static const int CONTROL_POINT_COUNT = 8;
};
Jetzt habe ich diese Klasse erweitern möchten, eine beliebige Menge von Kontrollpunkten zu ermöglichen. Deshalb möchte ich dies ändern:
class Curve
{
public:
int getControlPointCount() {return _controlPointCount;}
};
Die Frage ist, ob es nicht besser ist, in Verfahren zum Speichern von Konstanten zu beginnen, zu erleichtern Anpassungsfähigkeit. Mit anderen Worten, es wird nicht besser gestartet somit haben:
class Curve
{
public:
int getControlPointCount() {return 8;}
};
Der Vorteil davon ist, dass ich konnte nur ein Symbol in dem Verfahren in Frage geändert, statt sich zu bewegen um Konstanten usw.
Ist das eine gute oder eine schlechte?
Ich verstehe ehrlich gesagt die Frage nicht. Was ist anders als die 8 in der Methode zu ändern, um die 8 im Initialisierer der statischen zu ändern? Beide erfordern die gleiche Menge an Arbeit. Die Methode hat den Nachteil, dass es keine reine Kompilierzeitkonstante mehr ist und daher nicht für irgendwas verwendet werden kann. –