日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
這才是真正的“匈牙利命名法”

從剛進(jìn)大學(xué)開(kāi)始學(xué)習(xí) C 語(yǔ)言,就聽(tīng)說(shuō)了實(shí)際開(kāi)發(fā)中會(huì)用到的各種變量命名方法,例如常見(jiàn)的匈牙利命名法、駱駝命名法、Pascal 命名法等。

后來(lái)自己真正開(kāi)始用 C/C++ 寫程序,開(kāi)始使用匈牙利命名法,總覺(jué)得十分別扭。好好的變量名 name,嚴(yán)格按照命名規(guī)則,非得在前面加類型前綴,改寫成 lpszName。

如今的 IDE 都會(huì)自動(dòng)檢查變量類型,而且類型錯(cuò)誤在編譯時(shí)也比較容易發(fā)現(xiàn),在變量名前面強(qiáng)制加上類型信息實(shí)在不知道有什么意義。

直到無(wú)意中在《More Joel on Software》[1] 這本書第 23 章看到匈牙利命名法作者——Charles Simonyi 的本意。

1. 應(yīng)用型匈牙利命名法——鮮為人知的正統(tǒng)

Simonyi 的匈牙利命名法的原型在微軟公司內(nèi)部最初被叫做“應(yīng)用型匈牙利命名法”(Apps Hungarian),因?yàn)樗窃凇皯?yīng)用程序部”(Applications Division)中使用的,也就是用在 Word 和 Excel 身上。在 Excel 的源碼中,你可以看到大量的 rw 和 col 。

使用這種“應(yīng)用型匈牙利命名法”,我們可以在看到變量后很快理解其含義,并很容易發(fā)現(xiàn)代碼中的問(wèn)題。

例如在代碼中看到 xl = cb,

xl 表示“相對(duì)于頁(yè)面的橫坐標(biāo)”,horizontal coordinates relatives to the layout;cb 表示“字節(jié)個(gè)數(shù)”,count of bytes

顯然是有問(wèn)題的,雖然 xl 和 cb 都是整數(shù),但是這二者之間的賦值基本一定會(huì)導(dǎo)致 bug。

2. 系統(tǒng)型匈牙利命名法——廣為流傳的冒牌貨

然而,一定程度上由于 Simonyi 自己在編寫文檔時(shí),用了“type”這個(gè)詞,而不是“kind”,于是被人誤以為 Simonyi 指的是數(shù)據(jù)類型。盡管 Simonyi 很詳細(xì)、很準(zhǔn)確地解釋了他所說(shuō)的“type”到底是什么意思。可惜于事無(wú)補(bǔ),危害已經(jīng)釀成了。悲劇的結(jié)果就是產(chǎn)生了我們現(xiàn)在熟悉的“系統(tǒng)型匈牙利命名法”(System Hungarian)。

還是上面的例子,改用“系統(tǒng)型匈牙利命名法”以后,可以改成 nWidth = nCount,看起來(lái)好像還不錯(cuò)哈~

bug 就是這樣隱藏起來(lái)的。

“應(yīng)用型匈牙利命名法”的前綴是非常有用的、有含義的,比如:

“ix” 表示數(shù)組的索引值(index)

“c” 表示一個(gè)計(jì)數(shù)器(count)

“d” 表示兩個(gè)數(shù)量之間的差(difference),“dx” 就可以表示寬度 

“系統(tǒng)性匈牙利命名法”的前綴就差遠(yuǎn)了,比如

“l(fā)” 表示長(zhǎng)整型(long)

“ul” 表示無(wú)符號(hào)長(zhǎng)整型(unsigned long)

“dw” 表示雙精度值(double word),這實(shí)際上也是一個(gè)無(wú)符號(hào)的長(zhǎng)整型

這種差別雖然細(xì)微,但是完全誤解了 Simonyi 的意圖和做法?!跋到y(tǒng)型匈牙利命名法”傳播的又遠(yuǎn)又廣,在 Windows 編程文檔中,它是標(biāo)準(zhǔn)的變量命名法。難怪很多人都覺(jué)得匈牙利命名法很奇怪、很別扭。


文章題目:這才是真正的“匈牙利命名法”
轉(zhuǎn)載來(lái)源:http://www.dlmjj.cn/article/djsheie.html