国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

這就是大佬寫(xiě)的代碼么?

2022-03-11 20:33 作者:程序員魚(yú)皮  | 我要投稿

大家好,我是魚(yú)皮,無(wú)意間在網(wǎng)上看到了這么一張圖:

剛看到這段代碼時(shí),我是比較吃驚的,作者竟然使用了一個(gè)英文單詞 deadbeef 來(lái)定義宏常量!

我本來(lái)以為只是一位幽默的程序員的小玩笑,但后來(lái)查閱資料才知道,上圖的這段代碼竟是 C++ 的 hash_map 源碼!而作者使用這個(gè)特殊的英文單詞也是 “別有用心”。

deadbeef ?的英文直譯是死牛肉,但在編程領(lǐng)域中,它卻有更深層的含義。給這個(gè)單詞加上 0x 、再轉(zhuǎn)換為大寫(xiě),就得到了一個(gè)典型的十六進(jìn)制數(shù)字:0xDEADBEEF。這個(gè)數(shù)字經(jīng)常用來(lái)標(biāo)識(shí)新分配但是還未初始化的內(nèi)存;在嵌入式系統(tǒng)中,也常常用它來(lái)表示程序崩潰或者出現(xiàn)了死鎖,比如運(yùn)行在 32 位 PowerPC 處理器上的 IBM RS/6000 系統(tǒng)、Mac OS 系統(tǒng)。

那我不禁感到好奇,為什么選擇了這樣一個(gè)單詞,而不是 “FishPi” 之類的(開(kāi)個(gè)玩笑,16 進(jìn)制最多到 F)。

到網(wǎng)上查了一會(huì),得到的結(jié)論竟然是:沒(méi)什么理由,它是一個(gè) “魔數(shù)”!

所謂魔數(shù),就是毫無(wú)理由、憑空出現(xiàn)、也不需要去解釋其含義的常量。就是這么任性!

除了 deadbeef 外,我還百度到了很多魔數(shù),比如:

  • 0xBAADF00D ("bad food" 爛飯) 被微軟的 LocalAlloc(LMEM_FIXED)使用,在使用調(diào)試堆時(shí)指示未初始化的已分配堆內(nèi)存

  • 0xDEADC0DE ("dead code" 死碼) 在 OpenWRT 固件中用作標(biāo)記,在靜態(tài)固件的末尾表示要?jiǎng)?chuàng)建的 jffs2 文件系統(tǒng)的開(kāi)始

  • 0xDEAD10CC ("dead lock" 死鎖) ?用于表示 iOS 系統(tǒng)的閃退報(bào)告

是不是感覺(jué)很神奇?也許這就是程序員的浪漫吧。

看到這里,我忍不住了,也去寫(xiě)了幾個(gè)魔數(shù),大家來(lái)猜猜看是什么意思:

redisLock.lease(86400);
if?(fileSize?>?1073741824)?{
??...doSomething
}
if?(num?>?2147483647)?{
??printf("you?lose");
}

這幾個(gè)值都是我們寫(xiě)代碼時(shí)經(jīng)常用的,84600 = 3600 * 24 表示一天;1073741824 = 1024 * 1024 * 1024 表示 1 GB;而 2147483647 是 Java 等編程語(yǔ)言中 int 類型的最大值。

我把這些代碼拿給我朋友一看,他嘲笑道:人家大佬寫(xiě)的魔數(shù)叫魔數(shù),而你寫(xiě)的,只能叫爛代碼。

的確,除非是上面那些大佬 / 前輩公認(rèn)的、約定俗成的魔數(shù)外,我們?cè)谄綍r(shí)寫(xiě)代碼的時(shí)候,盡量不要使用魔數(shù),它會(huì)嚴(yán)重影響代碼的可讀性。我們可以通過(guò)定義常量來(lái)給這些魔數(shù)加上 “注釋”,比如:

int?ONE_DAY?=?86400;
int?ONE_GB?=?1073741824;
int?MAX_INTEGER?=?2147483647;

這樣就清晰很多了,也減少了我們輸入錯(cuò)誤的風(fēng)險(xiǎn)。

除了上面提到的魔數(shù)外,我還在網(wǎng)上看到了一些有實(shí)際意義的魔數(shù),比如現(xiàn)代 3D 游戲之父約翰·卡馬克在雷神之錘中的魔數(shù):

i?=?0x5f3759df?-?(?i?>>?1?);

完全不敢相信,上面這行代碼竟然可以快速計(jì)算一個(gè)數(shù)字的平方根的倒數(shù)!

在網(wǎng)上一查,還有很多論文專門(mén)研究這個(gè)東西:

不得不感嘆編程的魅力、數(shù)學(xué)的魅力啊!什么時(shí)候,我也能創(chuàng)造一個(gè)人盡皆知的魔數(shù)呢?

“喂,魚(yú)皮,別特么做夢(mèng)了,來(lái)搬磚!”

“來(lái)了來(lái)了,我再給你寫(xiě)幾個(gè)魔數(shù)(爛代碼)!”

最后,魚(yú)皮開(kāi)了個(gè)編程學(xué)習(xí)圈子,里面有幾千名學(xué)編程的小伙伴,我會(huì)在里面直播帶大家做項(xiàng)目~ 指路:http://dogyupi.com

這就是大佬寫(xiě)的代碼么?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
乌苏市| 工布江达县| 蕉岭县| 五峰| 漠河县| 建始县| 绵竹市| 阿瓦提县| 桐庐县| 信宜市| 崇州市| 理塘县| 贵阳市| 八宿县| 宜宾县| 防城港市| 汝城县| 保定市| 昔阳县| 梅河口市| 苏尼特右旗| 新郑市| 临沂市| 新宁县| 德格县| 廊坊市| 延吉市| 浦东新区| 涟水县| 密云县| 定陶县| 双鸭山市| 阳原县| 茂名市| 鄯善县| 海淀区| 皋兰县| 沙坪坝区| 遵义市| 金沙县| 襄樊市|