在最近的项目中,我需要将字节转换为千字节 kibibyte。代码很简单:
var kBval = byteVal / 1024;
编写完之后,我就完成了其余的功能并继续进行。
但是后来,我开始怀疑我是否在代码中嵌入了一个幻数。我的一部分说这很好,因为该数字是固定的常数,应该很容易理解。但是我的另一部分认为,如果将其包裹在一个已定义的常量(如)中,它将非常清晰BYTES_PER_KBYTE
。
那么,众所周知的常数是否真的那么神奇呢?
相关问题:
数字什么时候是魔数?而被认为是在代码中的每个号码的“幻数”?-相似,但问题比我要问的要广泛得多。我的问题集中在那些问题中没有解决的众所周知的常数上。
消除魔术数字:什么时候该说“不”?也是相关的,但专注于重构,而不是常数是否为幻数。
1024
,因为否则您的开发团队将全神贯注于它是“千字节”还是“千字节”。
#define
KIBI
而1024 MEBI
是1024 * 1024…
ZERO=0, ONE=1, TWO=2
并且当程序移植到其他语言时(或者程序员在切换语言时不会改变行为),您也会在那里看到它,并且您必须祈祷永远不要有人将其更改为ONE=2
……
FOUR_HUNDRED_FOUR = 404
。我在另一个项目中工作过,他们热衷于使用常量字符串而不是文字,因此他们在代码中有数十行,看起来像是,DATABASE = "database"