原因之一是协助维护。假设您陷入了黑暗时代,并且您的图形处理程序只能使用 1.4M 软盘。
您收到处理新型 2.8M 软盘的请求,您心里想“哈,我只需要搜索代码寻找 1440 并用 2880 替换它。很简单,嗯?”。
不幸的是,作为一个图形程序,1440 也是一英寸中的缇数,所以你发现在进行大量的全局搜索和替换之后,你不仅可以处理更大的磁盘,而且所有图像在屏幕上的尺寸都是错误的。噢!
现在你必须回去弄清楚which那些1440
字符串分别代表磁盘大小和图像大小。
如果您刚刚开发了这样的代码:
#define TWIPS_PER_INCH 1440
#define DISK_SZ 1440
您可以使更改变得更加容易,只需在一个地方更改该常量,而不影响具有相同值的所有其他常量。
简而言之,命名常量让您的生活变得更加轻松。这确实应该成为使用它们的充分理由。
一些极端主义者会坚持认为,你的程序中应该拥有的唯一硬编码常量是 -1、0 和 1 - 有些甚至会更进一步,但我们可以对那些疯子打折扣:-) 我还没到这一点,但我我确实认为尽可能避免它们是个好主意。
我觉得有趣的一件事是人们做这样的事情:
#define SEVENTY_TWO 72
我不太确定他们认为他们从中获得了什么,但实际上我有一次在回应我在代码审查中关于硬编码的评论时得到了这一点72
(我现在可以笑了,但在第二次审查会议上我不太高兴)。
另一个原因是为了使代码更具可读性。除非你有数学背景,否则当你看到像这样的常数时,你会不知所措1.414
在你的代码中。但是,那symbol SQR_ROOT_OF_2
可能更容易理解。它与大多数其他常量相同,例如:
SECS_PER_DAY 86400
CUST_ADDR_LINES 7
INVALID_ID -1
DAYS_PER_CENTURY 36524
PASS_LEVEL 63
MIN_REPUTATION 10000
MAX_LOAN_AMT 200000
您是否愿意将这些数字分散在右侧的代码,或者您愿意阅读其中intent更好地呈现?