为什么要避免magic number,demon number的看法(血的教训)
这是我自己这两天以来的一个血的教训,公司的最强程序员帮忙调试,结果还是没有找出BUG,最后实在是无意之间发现了错误。这就是所谓magic number,我更愿意叫他demon number。
什么是demon number?很多定义是:他是一个可以做为很多种解释的数据,你不能直接指定数字来作为程序的参数,至少应该定义为宏或者枚举量
但实际上我觉得这还不够,应该把规则扩大,这就是:你不要对一个数字定义不同的宏和枚举量,特别不能是0!!
如果你不这样做的话就有可能和我一样调一个BUG用了两天,最终发现是服务器向客户端进行强同步的时候由于一个结构的构造函数调用了ZeroMemory(),把结构清0或者255(这是好习惯)但这个时候也许你就忘记了你的有这么一个宏#define KIND1 0,完了,有可能不幸就这样开始里。。。。。。。。。反正会出一些奇怪的BUG啦,当然这个BUG是你自己的代码一手酿造的,但是往往你是没有对这些代码注意,因为他们用的是宏,你以为很安全。
也许你也遇到这样的问题,也许你觉得这很幼稚,但是这却非常重要,特别是在一个大工程里。如果你不满意我的说法,也请不要骂我,就当没看见好了:)