成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這才是真正的“匈牙利命名法”

開發 開發工具
匈牙利命名法是一種編程時的命名規范。基本原則是:變量名=屬性+類型+對象描述,其中每一對象的名稱都要求有明確含義,可以取對象名字全稱或名字的一部分。

從剛進大學開始學習 C 語言,就聽說了實際開發中會用到的各種變量命名方法,例如常見的匈牙利命名法、駱駝命名法、Pascal 命名法等。

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

如今的 IDE 都會自動檢查變量類型,而且類型錯誤在編譯時也比較容易發現,在變量名前面強制加上類型信息實在不知道有什么意義。

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

1. 應用型匈牙利命名法——鮮為人知的正統

Simonyi 的匈牙利命名法的原型在微軟公司內部最初被叫做“應用型匈牙利命名法”(Apps Hungarian),因為它是在“應用程序部”(Applications Division)中使用的,也就是用在 Word 和 Excel 身上。在 Excel 的源碼中,你可以看到大量的 rw 和 col 。

使用這種“應用型匈牙利命名法”,我們可以在看到變量后很快理解其含義,并很容易發現代碼中的問題。

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

xl 表示“相對于頁面的橫坐標”,horizontal coordinates relatives to the layout;cb 表示“字節個數”,count of bytes

顯然是有問題的,雖然 xl 和 cb 都是整數,但是這二者之間的賦值基本一定會導致 bug。

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

然而,一定程度上由于 Simonyi 自己在編寫文檔時,用了“type”這個詞,而不是“kind”,于是被人誤以為 Simonyi 指的是數據類型。盡管 Simonyi 很詳細、很準確地解釋了他所說的“type”到底是什么意思。可惜于事無補,危害已經釀成了。悲劇的結果就是產生了我們現在熟悉的“系統型匈牙利命名法”(System Hungarian)。

還是上面的例子,改用“系統型匈牙利命名法”以后,可以改成 nWidth = nCount,看起來好像還不錯哈~

bug 就是這樣隱藏起來的。

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

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

“c” 表示一個計數器(count)

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

“系統性匈牙利命名法”的前綴就差遠了,比如

“l” 表示長整型(long)

“ul” 表示無符號長整型(unsigned long)

“dw” 表示雙精度值(double word),這實際上也是一個無符號的長整型

這種差別雖然細微,但是完全誤解了 Simonyi 的意圖和做法。“系統型匈牙利命名法”傳播的又遠又廣,在 Windows 編程文檔中,它是標準的變量命名法。難怪很多人都覺得匈牙利命名法很奇怪、很別扭。

原文鏈接:http://www.cnblogs.com/xuxn/archive/2012/05/16/real-hungarian-notation.html

【編輯推薦】

  1. 推薦5個提高Java開發效率的工具
  2. 優秀開發者必備的四種品質
  3. 軟件開發基本原則之***項目
  4. 聘用Node.js開發者的六個建議
  5. 軟件開發如同木匠做桌子
責任編輯:彭凡 來源: 博客園
相關推薦

2020-05-28 10:45:31

Git分支合并

2016-12-16 19:06:02

擴展數據庫架構

2015-02-11 09:35:09

iPhone6

2020-03-05 16:47:51

Git內部儲存

2015-08-17 13:19:55

大數據

2015-04-03 10:11:57

Windows 10免費

2021-01-19 05:44:53

危機面試技術

2020-08-25 23:06:33

開發技能代碼

2025-04-02 02:12:00

用戶分析業務數據

2025-03-05 00:01:00

用戶分層平均數消費

2022-11-14 11:55:39

數據分析項目

2022-11-29 11:31:19

商品分析商品銷售庫存

2024-05-10 12:01:00

商品分析數據分析斷貨

2023-06-16 11:54:59

數據分析項目

2022-03-10 15:55:44

元宇宙VRVR辦公

2017-10-16 15:33:35

微信APP小程序

2021-12-15 07:24:56

SocketTCPUDP

2022-01-26 00:05:00

AOPRPC遠程調用

2023-09-27 07:21:08

數據分析報告PPT

2024-06-03 14:23:00

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级全黄视频 | 97日日碰人人模人人澡分享吧 | 99re热精品视频 | 色播久久久 | 中文字幕国产 | 精品一区电影 | 亚洲在线一区二区 | 亚洲精品在线91 | 九九99九九精彩46 | 激情欧美一区二区三区中文字幕 | 99re热精品视频 | 成人小视频在线 | 国产精品一区二区欧美 | 亚洲一区久久 | 91偷拍精品一区二区三区 | 一a级片 | 精品久久久久香蕉网 | 视频一区在线观看 | av黄色在线观看 | 在线视频国产一区 | 亚洲黄色高清视频 | 懂色tv| 亚洲一区国产 | 欧美日韩一区在线 | 精品一区久久 | 久久国产精品久久久久久久久久 | 91精品国产91久久综合桃花 | 99自拍视频| 麻豆av片 | 久久国产精品久久国产精品 | 91久久精品国产免费一区 | 精品久久久久一区 | 日韩欧美国产综合 | 6996成人影院网在线播放 | 久久精品视频免费看 | 97视频在线免费 | 91精品亚洲 | 日本aa毛片a级毛片免费观看 | 一呦二呦三呦国产精品 | 美女久久视频 | 天天插天天操 |