簡體   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