【发布时间】:2019-07-07 05:36:57
【问题描述】:
有时在实现某种算法的类中,我希望用户能够启用或禁用某些功能,比如缩放某些输入值。有时我会看到以下代码(在构造函数中设置了 bool/float 值):
class A
{
private:
bool enableScaling;
float scaleFactor;
public:
float foo(float x) const {
...
if(enableScaling) {
x *= scaleFactor;
}
...
}
};
我不清楚为此目的的两个变量,我正在寻找针对这种情况的建议。
在规模的情况下,我可以完全省略布尔变量并设置默认scaleFactor = 1.0f(中性),我想这对我来说没问题。有时“特征参数值”只能是正数,所以我可能会将其默认值设置为 -1 以表明该参数已禁用,但有时情况并非如此(所有值都允许)。
一般情况下您的处理方法是什么?
【问题讨论】:
-
如果您没有
enableScaling变量,则必须始终进行乘法运算。即使scaleFactor等于1.0,编译器也无法知道它,因此无法对其进行优化。检查布尔变量几乎总是比您要启用/禁用的任何操作更有效。更不用说可选处理并不总是那么简单,所以可能没有任何可能的默认值可以使用。 -
Software Engineer SE 中可能有更多的主题。
-
是的,@FranklinYu,但不确定
标签: c++ oop architecture