猫史档案馆


【JM】糟了!中幻"术"了?! Magic Number「魔数」是个什么玩意?【编程期刊-1】

用户:苏文星苏文星查看:0 回复:0 评论:0 创建时间:2023-03-19T19:26:23


大家好(๑╹◡╹)ノ”,今天咱来侃侃啥是 Magic Number 。

Magic Number 有3种含义,分别是

| 1、贬义词,指在代码中未说明其含义或用途,让人不明所以的数字

举个例子:

if hours<8760:
  ...

这里的 8760 是什么意思?虽然我们通过hours可以推出这个数字可能和小时数有关,但是是多少呢?30天?120天?365天?让别人去猜数字含义,而不是直接给出或明示,这里的 8760 就是个Magic Number。(8760=24*356,含义就是365天的小时数)

这种的 Magic Number 使代码难以阅读。所以,我们在写代码时尽量杜绝 Magic Number。改用常量或注释以便于阅读和维护代码。

#改法1
if hours==24*365:
  ...

#改法2
hour365day=24*365
if hours==hour365day:
  ...

#改法3
if hours==8760:#判断小时数是否小于356天的小时数
  ...

| 2、褒义词,魔法数字

最典型的例子就是现代3D游戏之父约翰·卡马克在雷神之锤中的那个魔数:

0x5f3759df

通过这个数字,程序可以非常快速计算一个数字的平方根的倒数。

这个靓丽的喵操作给了其它人非常大的震撼,是那个年代的大神级编程技术的缩影,

所以被人们怀着敬仰之情称之为“魔数”,全称为“如魔法一样神奇的数字”。

| 3、中性词,文件头

某些具有特定格式的文件,喜欢在文件开头写几个特殊的字符以表明自己的身份,以便验明正身。例如常见的几种图片格式的文件:

  1. JPEG (jpg),文件头:FFD8FF
  2. PNG (png),文件头:89504E47
  3. GIF (gif),文件头:47494638
  4. Windows Bitmap (bmp),文件头:424D

好了,就谈这么多

感兴趣的同学可以自行去了解更多

下期再见!

参考资料喵question/22018894/answer/1289760974


回复

上一页1 页 / 共 0下一页