我最近编写了一个渲染 B 样条曲线的类。这些曲线由许多控制点定义。本来我打算用八个控制点,所以我在类里加了一个常量,像这样:
class Curve
{
public:
static const int CONTROL_POINT_COUNT = 8;
};
现在我想扩展这个类以允许任意数量的控制点。所以我想将其更改为:
class Curve
{
public:
int getControlPointCount() {return _controlPointCount;}
};
问题是一开始就在方法中存储常量是否更好,以促进适应性。换句话说,这样开始不是更好吗:
class Curve
{
public:
int getControlPointCount() {return 8;}
};
这样做的好处是,我可以只更改相关方法中的一个符号,而不用移动常量等。
这是好事还是坏事?
最佳答案
int getControlPointCount() {return _controlPointCount;}
这是一个访问器。正如 litb 指出的那样,为访问器交换 const static 并不是真正的收获。您真正需要面向 future 的可能是一对访问器和修改器。
int getControlPointCount() {return _controlPointCount;} // accessor
我还会为访问器添加一个设计常量并使其成为:
int getControlPointCount() const {return _controlPointCount;} // accessor
和相应的:
void setControlPointCount(int cpc) { _controlPointCount = cpc;} //mutator
现在,与静态对象的最大区别在于控制点计数不再是类级属性,而是实例级属性。这是一个设计更改。你想要这样吗?
Nit:您的类级别静态计数是public
,因此不需要访问器。
关于c++ - 将类常量存储在数据成员中还是方法中更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647648/