一些如在上面的程序被称为神奇的数字122。一个神奇的数字是硬编码的数量在代码中没有任何上下文的122是什么意思?这是一个转换率?这是什么?它真的不清楚。在更复杂的程序,它往往是不可能知道一个硬编码的数字代表。
这段代码是清晰的:
1
2
#define YEN_PER_DOLLAR 122
int nYen = nDollars * YEN_PER_DOLLAR;
第二,#定义数字可以使程序更容易改变。 承担汇率从122变化到123,和我们的计划必须反映。 考虑下面的程序 :
1
2
3
4
5
int nYen1 = nDollars1 * 122;
int nYen2 = nDollars2 * 122;
int nYen3 = nDollars3 * 122;
int nYen4 = nDollars4 * 122;
SetWidthTo(122);
更新程序以使用新的汇率,我们要更新第一四报表从122到123。那第五个是什么声明吗?这122个具有相同的含义,为其他122s?如果是这样的话,它应该被更新。如果不是,它应该被单独留下,或者我们可以打破我们的程序在别的地方。
现在考虑#定义的值相同的程序: