在魔术数字上不需要命名常量的情况

时间:2009-11-10 02:13:32

标签: c++

显然,使用命名常量优于魔术数字的目的在于提高代码清晰度,并且无需通过代码更改数字。

但是,如果你在函数中只使用一次数字,你会怎么做?假设您有一个使用对象速度(我们会说不会改变)的短成员函数来计算它的运动,但这是使用该速度的唯一函数。你能不能......

A)给类命名静态常量以使用

B)在函数

中放入一个命名常量

C)使用幻数但注释

D)其他......

我倾向于使用一个神奇的数字,并且如果该数字仅仅被使用,则会对其进行评论,但我希望听到其他人的想法。

编辑:将命名常量放在一个多次调用的函数中并赋值给它会产生性能影响吗?如果确实如此,我猜最好的方法是将常量放在命名空间中或使其成为类变量等。

5 个答案:

答案 0 :(得分:5)

向上移动:

void do_something(void)
{
    const float InitialVelocity = 5.0f;

    something = InitialVelocity;
    // etc.
}

答案 1 :(得分:3)

  

假设你有一个简短的会员功能   使用对象的速度

你说过,常数有一个名字:

const type object_velocity = ....;

魔法数字是我的敌人:)

答案 2 :(得分:1)

我至少使用函数本地命名常量。通常我会使用一个名为constant的匿名命名空间来使整个源文件中的值可用,假设它稍后可能对其他函数有用。

答案 3 :(得分:0)

使用Eclipses重构函数将常量移动到方法的命名变量中。

答案 4 :(得分:0)

将其用作函数内的常量:

const int x = myMagicNumber; //Now document the magic.