女人被躁到高潮嗷嗷叫游戏,久久久久亚洲av成人人电影,久久久精品人妻一区二区三区四,久久久久无码精品国产app,免费人成视频在线播放

留求藝—您的留學(xué)規(guī)劃師

問(wèn)微軟匈牙利命名法是怎么回事

278次

問(wèn)題描述:

微軟匈牙利命名法是怎么回事啊,在線求解答

其他答案

匈牙利命名法計(jì)算機(jī)程序設(shè)計(jì)中的一種命名規(guī)則,用這種方法命名的變量顯示了其數(shù)據(jù)類型。匈牙利命名法有兩種:系統(tǒng)匈牙利命名法和匈牙利應(yīng)用命名法。匈牙利命名法被設(shè)計(jì)成語(yǔ)言獨(dú)立的,并且首次在BCPL語(yǔ)言中被大量使用。由于BCPL只有機(jī)器字這一種數(shù)據(jù)類型,因此這種語(yǔ)言本身無(wú)法幫助程序員來(lái)記住變量的類型。匈牙利命名法通過(guò)明確每個(gè)變量的數(shù)據(jù)類型來(lái)解決這個(gè)問(wèn)題。在匈牙利命名法中,一個(gè)變量名由一個(gè)或多個(gè)小寫(xiě)字母開(kāi)始,這些字母有助于記憶變量的類型和用處,緊跟著的就是程序員選擇的任何名稱。這個(gè)后半部分的首字母可以大寫(xiě)以區(qū)別前面的類型指示字母。 系統(tǒng)匈牙利命名法與匈牙利應(yīng)用命名法系統(tǒng)命名法與應(yīng)用命名法的區(qū)別在于前綴的目的。在系統(tǒng)匈牙利命名法中,前綴代表了變量的實(shí)際數(shù)據(jù)類型。例如:* lAccountNum : 變量是一個(gè)長(zhǎng)整型 ("l");* arru8NumberList : 變量是一個(gè)無(wú)符號(hào)8位整型數(shù)組 ("arru8");* szName : 變量是一個(gè)零結(jié)束字符串 ("sz"),這是西蒙尼最開(kāi)始建議的前綴之一。匈牙利應(yīng)用命名法不表示實(shí)際數(shù)據(jù)類型,而是給出了變量目的的提示,或者說(shuō)它代表了什么。* rwPosition : 變量代表一個(gè)行 ("rw")。* usName : 變量代表一個(gè)非安全字符串 ("us"),需要在使用前處理。* strName : 變量代表一個(gè)包含名字的字符串("str")但是沒(méi)有指明這個(gè)字符串是如何實(shí)現(xiàn)的。西蒙尼建議的大多數(shù)前綴都是自然語(yǔ)義的,但不是所有。下面幾個(gè)是來(lái)自原始論文的: * pX是指向另一個(gè)X類型的指針,這包含非常少的語(yǔ)義信息。* d是一個(gè)前綴表示兩個(gè)值的區(qū)別,例如,dY可能代表一個(gè)圖形沿Y軸的距離,而一個(gè)僅僅叫做y的變量可能是一個(gè)絕對(duì)坐標(biāo)。這完全是自然語(yǔ)義的。* sz是一個(gè)無(wú)結(jié)束或零結(jié)束的字符串。在C中,這包含一些語(yǔ)義信息,因?yàn)樗皇呛苊鞔_一個(gè)char*類型的變量是一個(gè)指向單個(gè)字符的指針,還是一個(gè)字符數(shù)組,亦或是一個(gè)零結(jié)束字符串。* w標(biāo)記一個(gè)變量是一個(gè)字。這基本上沒(méi)有包含什么語(yǔ)義信息,因此大概會(huì)被當(dāng)成是系統(tǒng)命名法。* b標(biāo)記了一個(gè)字節(jié),和w對(duì)比可能有一些語(yǔ)義信息,因?yàn)镃語(yǔ)言中,只有字節(jié)大小的數(shù)據(jù)是char型的,因此這些有時(shí)候被用來(lái)保存數(shù)值。這個(gè)前綴也許可以明確某個(gè)變量保存的是應(yīng)該被看作是字母(或更一般的字符)的數(shù)值還是一個(gè)數(shù)字。由于這種命名法通常使用小寫(xiě)字母開(kāi)頭用來(lái)助記,但是并沒(méi)有對(duì)助記符本身作規(guī)定。有幾種被廣泛使用的習(xí)慣(見(jiàn)下面的示例),但是任意字母組合都可以被使用,只要它們?cè)诖a主體中保持一致就可以了。在使用匈牙利系統(tǒng)命名法的代碼中有時(shí)候也可能包含系統(tǒng)匈牙利命名法,即在描述被單獨(dú)以類型方式定義的變量時(shí)使用。 示例* bBusy : 布爾型* cApples : 項(xiàng)目計(jì)數(shù)* dwLightYears : 雙字(系統(tǒng))* fBusy : 布爾型(標(biāo)記)* nSize : 整型(系統(tǒng))或計(jì)數(shù)(應(yīng)用程序)* iSize : 整型(系統(tǒng))或索引(應(yīng)用程序)* fpPrice: 浮點(diǎn)數(shù)* dbPi : 雙精度浮點(diǎn)數(shù)(系統(tǒng))* pFoo : 指針* rgStudents : 數(shù)組或范圍* szLastName : 零結(jié)束字符串* u32Identifier : 無(wú)符號(hào)32位整型(系統(tǒng))* stTime : 時(shí)鐘結(jié)構(gòu)* fnFunction : 函數(shù)名對(duì)于指針和數(shù)組來(lái)說(shuō),它們實(shí)際上并不是數(shù)據(jù)類型,因此通常在助記符后面跟著實(shí)際元素的類型。* pszOwner : 指向零結(jié)束字符串的指針* rgfpBalances : 浮點(diǎn)值的數(shù)組由于匈牙利命名法可以被應(yīng)用在任何程序設(shè)計(jì)語(yǔ)言和環(huán)境中,因此被微軟廣泛用在C語(yǔ)言中,特別是在Microsoft Windows里。由此一來(lái),許多常見(jiàn)的匈牙利命名法的結(jié)構(gòu)都和Windows緊密相關(guān):* hwndFoo : 窗口句柄* lpszBar : 指向零結(jié)束字符串的長(zhǎng)指針這種命名法又是在C++中被擴(kuò)展而包含變量的作用域,由一個(gè)下劃線隔開(kāi):* g_nWheels : 全局命名空間的成員,整型* m_nWheels : 結(jié)構(gòu)體/類成員,整型系統(tǒng)匈牙利命名法的優(yōu)點(diǎn)(其中一些只適用于系統(tǒng)匈牙利命名法) 支持者聲稱匈牙利命名法的好處包括:* 從名字中就可以看出變量的類型* 擁有類似語(yǔ)義的多個(gè)變量可以在一個(gè)代碼塊中使用:dwWidth, iWidth, fWidth, dWidth* 變量名在僅僅知道他們的類型時(shí)可以被輕易記住* 可以使變量名更加一致* 決定一個(gè)變量名的時(shí)候可以更機(jī)械化,更快* 不合適的類型轉(zhuǎn)換和操作可以在閱讀代碼的時(shí)候被檢測(cè)出來(lái)* 在那些數(shù)字被當(dāng)作字符串處理的基于字符串的語(yǔ)言中非常有用(例如Tcl)* 在匈牙利應(yīng)用命名法中,變量名確保不會(huì)犯以下錯(cuò)誤:heightWindow = window.getWidth()* 在使用動(dòng)態(tài)類型語(yǔ)言或完全無(wú)類型的語(yǔ)言編程時(shí),關(guān)于類型的修飾可以更簡(jiǎn)化。這種語(yǔ)言一般不包含類型修飾(或者可選),因此唯一可以看出哪些類型是被允許的只有名字本身、文檔以及通過(guò)閱讀代碼來(lái)明白它們?cè)谧鍪裁?。在這些語(yǔ)言中,包含對(duì)于變量類型的指示可能會(huì)有助于程序員。就像上面提到的,匈牙利命名法擴(kuò)展了這樣的語(yǔ)言(BCPL)。* 在包含許多全局對(duì)象的復(fù)雜程序中(VB/Delphi Forms),擁有一個(gè)基本的前綴命名法可以簡(jiǎn)化在編輯器中查找組件的工作。按btn<Ctrl-Space>可以使編輯器彈出一個(gè)Button對(duì)象的列表。匈牙利系統(tǒng)命名法的缺點(diǎn)批評(píng)者認(rèn)為:* 匈牙利命名法在編譯器做類型檢查時(shí)是多余的。 一個(gè)提供類型檢查的語(yǔ)言在確定一個(gè)變量與其類型一致時(shí),比人眼僅僅檢查變量的用法與變量名一致要強(qiáng)大的多。* 一些現(xiàn)代的集成開(kāi)發(fā)環(huán)境,如Visual Studio在需要時(shí)可以顯示變量類型,并且自動(dòng)標(biāo)記不匹配的類型。使用這種命名法完全沒(méi)有必要。* 匈牙利命名法在被用作代表多個(gè)屬性的時(shí)候會(huì)造成困惑,如 a_crszkvc30LastNameCol:一個(gè)常量引用參數(shù),保存了一個(gè)varchar(30)類型的數(shù)據(jù)庫(kù)列LastName的內(nèi)容,而這列又是這個(gè)表的主鍵的一部分。* 在代碼更改后可能造成不一致。如果一個(gè)變量的類型改變了,不是變量名的修飾與新的類型不一致,就是變量名必須被改變。* 由于變量名和類型捆綁在一起,因此不利于代碼的移植。一個(gè)典型的眾所周之的例子就是WPARAM類型,以及在許多Windows系統(tǒng)函數(shù)聲明中使用的wParam參數(shù)。它原本是一個(gè)16位的類型,但是在后來(lái)的操作系統(tǒng)中被改成了32位或64位,但仍保留原來(lái)的名字(它實(shí)際的基礎(chǔ)類型是 UINT_PTR,即一個(gè)大小足夠保存一個(gè)指針的無(wú)符號(hào)整型)。* 大多數(shù)時(shí)候,看到一個(gè)變量就意味著知道了它的類型。但是,如果你不知道一個(gè)變量是干什么的,知道了它的類型也沒(méi)什么幫助。.NET Framework,微軟新的軟件開(kāi)發(fā)平臺(tái),除了接口類型一般不適用匈牙利命名法。在.NET中,習(xí)慣在接口類型前放一個(gè)I(例如Windows Forms中的IButtonControl接口。).NET Framework指導(dǎo)方針建議程序員不要用匈牙利命名法,但是沒(méi)有指明不要用系統(tǒng)匈牙利命名法還是匈牙利應(yīng)用命名法,或者是兩者都不要用。 與此對(duì)比,Java的標(biāo)準(zhǔn)庫(kù)中連接口類型也不加前綴。

其他答案

命名規(guī)范命名應(yīng)盡量使用匈牙利命名法,變量名或函數(shù)名中使用大寫(xiě)字符來(lái)區(qū)分各個(gè)部分,以便于記憶和閱讀。如bPatchMinute, DeleteDirInfo()。全局(包括類中的)變量用長(zhǎng)名字,局部變量用短名字。類成員變量前一般應(yīng)加上m_,全局變量加上g_,僅與本模塊有關(guān)的變量加上l_,緊接著是變量的類型。整型: n,i長(zhǎng)整型: l無(wú)符號(hào)整型: u無(wú)符號(hào)長(zhǎng)整型:dw字符: ch布爾量: b浮點(diǎn)數(shù): f雙精度浮點(diǎn): d字符串: str,lpsz,sz,p,lp,ac,指針: p字節(jié)指針: pb無(wú)符號(hào)指針: pv字符指針: lpsz整型指針: lpn文件指針: fp如:m_nTotalNum,m_strPath,m_bRcving,m_fPrice,g_lOpenDate,g_dwCardNo,lpszNameStr,lpnSysDoomType,uMsgID,m_pProgress

為你推薦

網(wǎng)站首頁(yè)  |  關(guān)于我們  |  聯(lián)系方式  |  用戶協(xié)議  |  隱私政策  |  在線報(bào)名  |  網(wǎng)站地圖