为什么要避免magic number,demon number的看法(血的教训)

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

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧