我們對代碼中的幻數有很好的理解,但是有沒有一種好的,表達式和類型安全的方法來固化具有特殊含義的常量?我能想到的兩種可能的方式:C++整數類型:對特定值有特殊含義
方法1:
typedef int NumberOfThreads;
const NumberOfThreads automaticNumberOfThreads = 0;
方法2:
class NumberOfThreads
{
NumberOfThreads(int n) : value(n) {}
static NumberOfThreads automatic() { return NumberOfThreads(0); }
bool isAutomatic() const { return value == automatic(); }
int value;
};
我真的不希望有一個複雜的類型,但我不希望我的特殊價值與類型緊密聯繫。在方法1是不是和懶惰的用戶可能只是硬編碼到0
轉讓或比較。
方法2似乎是東西是不是比整數值更重了些。
問題可以擴展到非整數類型和多個特殊值。
或許enum
有可能?
編輯:
我意識到,我可以在我的頭文件使用extern
我認爲「類型安全」是你的問題的一個問題。我認爲你正試圖通過使用數據類型強制來強制正確的使用。 Enum和好的命名是「足夠好」的。 – Jay 2011-04-06 19:43:14
@Jay - 是的,你說的比我好。我想強制正確使用,最好隱藏魔法值。 – paperjam 2011-04-06 19:53:37