魔術數字 (程式設計)
在程式設計中,魔術數字(magic number)可能指:
未命名的具体数值魔術數字可以是指寫死在程式碼裡的具體數值(如「10」「123」等以數字直接寫出的值)。例如,在下面这个计算含税价格的程序片段中, price_tax = 1.05 * price 雖然程式作者寫的時候自己能了解數值的意義,但對其他程式員而言,甚至製作者本人經過一段時間後,會難以了解這個數值的用途,只能苦笑諷刺「這個數值的意義雖然不懂,不過至少程式能夠執行,真是個魔術般的數字」而得名(起源参考平方根倒数速算法)。 魔术数字带来的常见的负面影响包括:
因此,一般认为应该用一个带有有意义名称的常量取代魔术数字,例如上述的例子可以改为: TAX = 0.05 price_tax = (1.0 + TAX) * price 在计算机中以数字表示的其他信息也可能成为魔术数字,例如以十六进制数字表示的RGB格式的颜色: setColor("text", 0xffffff) 当读到这段代码时,很难第一时间就看懂 WHITE = 0xffffff setColor("text", WHITE) 魔术数字也可以指其他非数字的值,例如字符,字符串等等。 但是,并非所有未命名的具体数值都是魔术数字。一般而言,只要数字能让人一眼明白其含义,并且基本没有需要改变的可能,就不会被认为是魔术数字。常见的例子包括:
在文件中魔术数字也会在文件中使用。在特定文件格式中加入固定数值和固定字符串,然后便可以通过检查文件是否包含这些数据来快速地识别文件格式。 例如:GIF文件开头会包含 参见 |
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia