繁体   English   中英

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

[英]A case where named constants are not needed over magic numbers

显然,在魔术数字上使用命名常量的目的是为了使代码清晰,而不必遍历整个代码更改数字。

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

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

B)在函数中放置一个命名常量

C)使用幻数但要注释

D)其他...

我倾向于使用一个魔术数字,如果该数字仅可使用一次,请对其进行评论,但我想听听其他人的想法。

编辑:将命名常量放入多次调用的函数中并对其进行赋值是否会对性能产生影响? 如果可以的话,我猜最好的方法是将常量放入名称空间或使其成为类变量,等等。

只需向上移动:

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

    something = InitialVelocity;
    // etc.
}

假设您有一个使用成员速度的短成员函数

你说了,常量有个名字:

const type object_velocity = ....;

魔术数字是我的敌人:)

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

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

在函数内部将其用作常量:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM