猫史档案馆


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

用户:苏文星苏文星查看:1 回复:3 评论:1 创建时间:2023-03-19T19:22:36


大家好(๑╹◡╹)ノ”,今天咱来侃侃啥是 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
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  

 

好了,就谈这么多

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

下期再见!

参考资料: 【1】www.zhihu.com/question/22018894/answer/1289760974


回复

上一页1 页 / 共 1下一页
追梦ez追梦ez

ddd

点赞1


评论


追梦ez追梦ez

if hours<114514:#这逝Magic Number(确信)
  ...

点赞0


评论


一个黄脸一个黄脸

好懵啊,看不懂

点赞0


评论