VB編程的八個(gè)優(yōu)良習(xí)慣
更新時(shí)間:2007年03月14日 00:00:00 作者:
除了全局變量(應(yīng)該是不被傳遞的),過(guò)程和函數(shù)應(yīng)該僅對(duì)傳遞給它們的對(duì)象操作。在過(guò)程中使用的全局變量應(yīng)該在過(guò)程起始處的聲明部分中標(biāo)識(shí)出來(lái)。此外,應(yīng)該用 ByVal 將參數(shù)傳遞給 Sub 過(guò)程及 function 過(guò)程,除非明顯地需要改變已傳遞的參數(shù)值。
隨著工程大小的增長(zhǎng),劃分變量范圍的工作也迅速增加。在類(lèi)型前綴的前面放置單字母范圍前綴標(biāo)明了這種增長(zhǎng),但變量名的長(zhǎng)度并沒(méi)有增加很多。
變量范圍前綴
范圍 前綴 例子
全局 g gstrUserName
模塊級(jí) m mblnCalcInProgress
本地到過(guò)程 無(wú) dblVelocity
如果一個(gè)變量在標(biāo)準(zhǔn)模塊或窗體模塊中被聲明為 Public,那么該變量具有全局范圍。如果一個(gè)變量在標(biāo)準(zhǔn)模塊或窗體模塊中被分別聲明為 Private,那么該變量有模塊級(jí)范圍。
注意: 一致性是卓有成效地使用這種技術(shù)的關(guān)鍵;Visual Basic 中的語(yǔ)法檢查器不會(huì)捕捉以 "p." 開(kāi)頭的模塊級(jí)變量。
常量
常量名的主體是大小寫(xiě)混合的,每個(gè)單詞的首字母大寫(xiě)。盡管標(biāo)準(zhǔn) Visual Basic 常量不包含數(shù)據(jù)類(lèi)型和范圍信息,但是象 i、s、g 和 m 這樣的前綴對(duì)于理解一個(gè)常量的值和范圍還是很有用的。對(duì)于常量名,應(yīng)遵循與變量相同的規(guī)則。例如:
mintUserListMax '對(duì)用戶列表的最大限制
'(整數(shù)值,本地到模塊)
gstrNewLine '新行字符
'(字符串,應(yīng)用程序全局使用)
變量
聲明所有的變量將會(huì)節(jié)省編程時(shí)間,因?yàn)殒I入操作引起的錯(cuò)誤減少了(例如,究竟是 aUserNameTmp,還是 sUserNameTmp,還是 sUserNameTemp)。在“選項(xiàng)”對(duì)話框的“編輯器”標(biāo)簽中,復(fù)選“要求變量聲明”選項(xiàng)。Option Explicit 語(yǔ)句要求在 Visual Basic 程序中聲明所有的變量。
應(yīng)該給變量加前綴來(lái)指明它們的數(shù)據(jù)類(lèi)型。而且前綴可以被擴(kuò)展,用來(lái)指明變量范圍,特別是對(duì)大型程序。
用下列前綴來(lái)指明一個(gè)變量的數(shù)據(jù)類(lèi)型。
變量數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型 前綴 例子
String (字符串類(lèi)型) str strFName
Integer (短整數(shù)類(lèi)型) int intQuantity
Long (長(zhǎng)整數(shù)類(lèi)型) lng lngDistance
Single (單精度浮點(diǎn)數(shù)類(lèi)型) sng sngAverage
Double (雙精度浮點(diǎn)數(shù)類(lèi)型) dbl dblTolerance
Boolean (布爾類(lèi)型) bln blnFound
Byte (字節(jié)類(lèi)型) byt bytRasterData
Date (日期類(lèi)型) dte dteNow
Currency (貨幣計(jì)算與定點(diǎn)計(jì)算類(lèi)型) cur curRevenue
Object (對(duì)象類(lèi)型) obj objCurrent
Variant (變體類(lèi)型) vnt vntCheckSum
描述變量和過(guò)程名
變量或過(guò)程名的主體應(yīng)該使用大小寫(xiě)混合形式,并且應(yīng)該足夠長(zhǎng)以描述它的作用。而且,函數(shù)名應(yīng)該以一個(gè)動(dòng)詞起首,如 InitNameArray 或 CloseDialog。
對(duì)于頻繁使用的或長(zhǎng)的項(xiàng),推薦使用標(biāo)準(zhǔn)縮略語(yǔ)以使名稱的長(zhǎng)度合理化。一般來(lái)說(shuō),超過(guò) 32 個(gè)字符的變量名在 VGA 顯示器上讀起來(lái)就困難了。
當(dāng)使用縮略語(yǔ)時(shí),要確保它們?cè)谡麄€(gè)應(yīng)用程序中的一致性。在一個(gè)工程中,如果一會(huì)兒使用 Cnt, 一會(huì)兒使用 Count,將導(dǎo)致不必要的混淆。
用戶定義的類(lèi)型
在一項(xiàng)有許多用戶定義類(lèi)型的大工程中,常常有必要給每種類(lèi)型一個(gè)它自己的三個(gè)字符的前綴。如果這些前綴是以 "u" 開(kāi)始的,那么當(dāng)用一個(gè)用戶定義類(lèi)型來(lái)工作時(shí),快速識(shí)別這些類(lèi)型是很容易的。例如,ucli 可以被用來(lái)作為一個(gè)用戶定義的客戶類(lèi)型變量的前綴。
[返回索引]
4、在簡(jiǎn)單的選擇條件情況下,使用IIf()函數(shù)
羅索的代碼:
If nNum = 0 Then
sName = "sancy"
Else
sName = "Xu"
End If
簡(jiǎn)單的代碼:
sName=IIf(nNum=0,"sancy","Xu")
5、盡量使用Debug.Print進(jìn)行調(diào)試
在很多初學(xué)者的調(diào)試中,用MsgBox來(lái)跟蹤變量值.其實(shí)用Debug.Print不僅可以達(dá)到同樣的功效,而且在程序最后編譯過(guò)程中,會(huì)被忽略.而MsgBox必須手動(dòng)注釋或刪除.
通常:
MsgBox nName
應(yīng)該:
Debug.Print nName
6、在重復(fù)對(duì)某一對(duì)象的屬性進(jìn)行修改時(shí),盡量使用With....End With
通常:
Form1.Height = 5000
Form1.Width = 6000
Form1.Caption = "This is MyLabel"
應(yīng)該:
With Form1
.Height = 5000
.Width = 6000
.Caption = "This is MyLabel"
End With
這種結(jié)構(gòu)程序執(zhí)行效率比較高,特別在循環(huán)語(yǔ)句里。
7、MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范
一般來(lái)說(shuō)
vbInformation 用來(lái)提示確認(rèn)或成功操作的消息
vbExclamation 用來(lái)提示警告的消息
vbCritical 用來(lái)提示危機(jī)情況的消息
vbQuestion 用來(lái)提示詢問(wèn)的消息
[返回索引]
8、在可能的情況下使用枚舉
枚舉的格式為
[Public | Private] Enum name
membername [= constantexpression]
membername [= constantexpression]
....
End Enum
Enum 語(yǔ)句包含下面部分:
部分 描述
Public 可選的。表示該 Enum 類(lèi)型在整個(gè)工程中都是可見(jiàn)的。Enum 類(lèi)型的缺省情況是 Public。
Private 可選的。表示該 Enum 類(lèi)型只在所聲明的模塊中是可見(jiàn)的。
name 必需的。該 Enum 類(lèi)型的名稱。name 必須是一個(gè)合法的 Visual Basic 標(biāo)識(shí)符,在定義該 Enum 類(lèi)型的變量或參數(shù)時(shí)用該名稱來(lái)指定類(lèi)型。
membername 必需的。用于指定該 Enum 類(lèi)型的組成元素名稱的合法 Visual Basic 標(biāo)識(shí)符。
constantexpression 可選的。元素的值(為 Long 類(lèi)型)??梢允莿e的 Enum 類(lèi)型。如果沒(méi)有指定 constantexpression,則所賦給的值或者是 0(如果該元素是第一個(gè) membername),或者比其直接前驅(qū)的值大 1。
說(shuō)明
所謂枚舉變量,就是指用 Enum 類(lèi)型定義的變量。變量和參數(shù)都可以定義為 Enum 類(lèi)型。Enum 類(lèi)型中的元素被初始化為 Enum 語(yǔ)句中指定的常數(shù)值。所賦給的值可以包括正數(shù)和負(fù)數(shù),且在運(yùn)行時(shí)不能改變。例如:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Enum 語(yǔ)句只能在模塊級(jí)別中出現(xiàn)。定義 Enum 類(lèi)型后,就可以用它來(lái)定義變量,參數(shù)或返回該類(lèi)型的過(guò)程。不能用模塊名來(lái)限定 Enum 類(lèi)型。類(lèi)模塊中的 Public Enum 類(lèi)型并不是該類(lèi)的成員;只不過(guò)它們也被寫(xiě)入到類(lèi)型庫(kù)中。在標(biāo)準(zhǔn)模塊中定義的 Enum 類(lèi)型則不寫(xiě)到類(lèi)型庫(kù)中。具有相同名字的 Public Enum 類(lèi)型不能既在標(biāo)準(zhǔn)模塊中定義,又在類(lèi)模塊中定義,因?yàn)樗鼈児蚕硐嗤拿臻g。若不同的類(lèi)型庫(kù)中有兩個(gè) Enum 類(lèi)型的名字相同,但成員不同,則對(duì)這種類(lèi)型的變量的引用,將取決于哪一個(gè)類(lèi)型庫(kù)具有更高的引用優(yōu)先級(jí)。
不能在 With 塊中使用 Enum 類(lèi)型作為目標(biāo)。
Enum 語(yǔ)句示例
下面的示例演示用 Enum 語(yǔ)句定義一個(gè)命名常數(shù)的集合。在本例中是一些可以選擇的顏色常數(shù)用于設(shè)計(jì)數(shù)據(jù)庫(kù)的數(shù)據(jù)輸入窗體。
Public Enum InterfaceColors
icMistyRose = &HE1E4FF&
icSlateGray = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFBF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icGoldenrod = &H20A5DA&
icFirebrick = &H2222B2&
End Enum
好處是加快編程速度
您可能感興趣的文章:
相關(guān)文章
VB簡(jiǎn)單實(shí)現(xiàn)防止文件被改寫(xiě)
這篇文章主要介紹了VB簡(jiǎn)單實(shí)現(xiàn)防止文件被改寫(xiě)的方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2015-06-06
VB實(shí)現(xiàn)鼠標(biāo)繪圖實(shí)例代碼
這篇文章主要介紹了VB實(shí)現(xiàn)鼠標(biāo)繪圖實(shí)例代碼,很實(shí)用的一個(gè)功能,需要的朋友可以參考下2014-07-07
VB6實(shí)現(xiàn)連接Access數(shù)據(jù)庫(kù)的ADODB代碼實(shí)現(xiàn)方法
這篇文章主要介紹了VB6實(shí)現(xiàn)連接Access數(shù)據(jù)庫(kù)的ADODB代碼實(shí)現(xiàn)方法,對(duì)于初學(xué)者掌握VB鏈接access數(shù)據(jù)庫(kù)有著很好的借鑒價(jià)值,需要的朋友可以參考下2014-07-07
淺談如何使用vb.net從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)
這篇文章主要介紹了淺談如何使用vb.net從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),使用VB提取數(shù)據(jù),是先查找,做成數(shù)組,再顯示到數(shù)據(jù)里,如果感興趣可以了解一下2020-07-07
VB實(shí)現(xiàn)的倒計(jì)時(shí)類(lèi)代碼詳解
這篇文章主要介紹了VB實(shí)現(xiàn)的倒計(jì)時(shí)類(lèi)代碼,非常實(shí)用的功能,需要的朋友可以參考下2014-07-07
VB實(shí)現(xiàn)的16位和32位md5加密代碼分享
這篇文章主要介紹了VB實(shí)現(xiàn)的16位和32位md5加密代碼分享,需要的朋友可以參考下2014-07-07

