1、"&"替換"+"
在很多人的編程語言中,用“+”來連接字符串,這樣容易導(dǎo)致歧義。良好的習(xí)慣是用“&”來連接字符串.
不正確:
Dim sMessage As String
sMessage = "1" + "2"
正確:
Dim sMessage As String
sMessage = "1" & "2"
注意:"&"的后面有個(gè)空格
2、變量命名大小寫,語句錯(cuò)落有秩,源代碼維護(hù)方面
下面大家比較一下以下兩段代碼:
讀懂難度很大的代碼:
Dim SNAME As String
Dim NTURN As Integer
If NTURN = 0 Then
If SNAME = "vbeden" Then
Do While NTURN < 4
NTURN = NTURN + 1
Loop
End If
End If
容易讀懂的代碼:
Dim sName As String
Dim nTurn As Integer
If nTurn = 0 Then
If sName = "vbeden" Then
Do While nTurn < 4
nTurn = nTurn + 1
Loop
End If
End If
3、請(qǐng)養(yǎng)成以下的“對(duì)象命名約定”良好習(xí)慣
推薦使用的控件前綴
控件類型 前綴 例子
復(fù)選框Check box chk chkReadOnly
組合框Combo box cbo cboEnglish
命令按鈕Command button cmd cmdExit
通用對(duì)話框Common dialog dlg dlgFileOpen
目錄列表框Directory list box dir dirSource
驅(qū)動(dòng)器列表框Drive list box drv drvTarget
文件列表框File list box fil filSource
窗體Form frm frmEntry
圖象框Image img imgIcon
標(biāo)簽Label lbl lblHelpMessage
列表框List box lst lstPolicyCodes
菜單Menu mnu mnuFileOpen
單選按鈕Option button opt optGender
圖片框Picture box pic picVGA
文本框Text box txt txtLastName
時(shí)鐘控件Timer tmr tmrAlarm
變量
聲明所有的變量將會(huì)節(jié)省編程時(shí)間,因?yàn)殒I入操作引起的錯(cuò)誤減少了(例如,究竟是 aUserNameTmp,還是 sUserNameTmp,還是 sUserNameTemp)。在“選項(xiàng)”對(duì)話框的“編輯器”標(biāo)簽中,復(fù)選“要求變量聲明”選項(xiàng)。Option Explicit 語句要求在 Visual Basic 程序中聲明所有的變量。
應(yīng)該給變量加前綴來指明它們的數(shù)據(jù)類型。而且前綴可以被擴(kuò)展,用來指明變量范圍,特別是對(duì)大型程序。
用下列前綴來指明一個(gè)變量的數(shù)據(jù)類型。
變量數(shù)據(jù)類型
數(shù)據(jù)類型 前綴 例子
String (字符串類型) str strFName
Integer (短整數(shù)類型) int intQuantity
Long (長(zhǎng)整數(shù)類型) lng lngDistance
Single (單精度浮點(diǎn)數(shù)類型) sng sngAverage
Double (雙精度浮點(diǎn)數(shù)類型) dbl dblTolerance
Boolean (布爾類型) bln blnFound
Byte(字節(jié)類型) byt bytRasterData
Date (日期類型) dte dteNow
Currency (貨幣類型) cur curRevenue
Object (對(duì)象類型) obj objCurrent
Variant (變體類型) vnt vntCheckSum
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來跟蹤變量值.其實(shí)用Debug.Print不僅可以達(dá)到同樣的功效,而且在程序最后編譯過程中,會(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)語句里。
7、MsgBox中盡量使用消息圖標(biāo),這樣程序比較有規(guī)范
一般來說
vbInformation 用來提示確認(rèn)或成功操作的消息
vbExclamation 用來提示警告的消息
vbCritical 用來提示危機(jī)情況的消息
vbQuestion 用來提示詢問的消息
8、在可能的情況下使用枚舉
枚舉的格式為
[Public | Private] Enum name
membername [= constantexpression]
membername [= constantexpression]
....
End Enum
Enum 語句包含下面部分:
部分 描述
Public 可選的。表示該 Enum 類型在整個(gè)工程中都是可見的。Enum 類型的缺省情況是 Public。
Private 可選的。表示該 Enum 類型只在所聲明的模塊中是可見的。
name 必需的。該 Enum 類型的名稱。name 必須是一個(gè)合法的 Visual Basic 標(biāo)識(shí)符,在定義該 Enum 類型的變量或參數(shù)時(shí)用該名稱來指定類型。
membername 必需的。用于指定該 Enum 類型的組成元素名稱的合法 Visual Basic 標(biāo)識(shí)符。
constantexpression 可選的。元素的值(為 Long 類型)??梢允莿e的 Enum 類型。如果沒有指定 constantexpression,則所賦給的值或者是 0(如果該元素是第一個(gè) membername),或者比其直接前驅(qū)的值大 1。
說明
所謂枚舉變量,就是指用 Enum 類型定義的變量。變量和參數(shù)都可以定義為 Enum 類型。Enum 類型中的元素被初始化為 Enum 語句中指定的常數(shù)值。所賦給的值可以包括正數(shù)和負(fù)數(shù),且在運(yùn)行時(shí)不能改變。例如:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Enum 語句只能在模塊級(jí)別中出現(xiàn)。定義 Enum 類型后,就可以用它來定義變量,參數(shù)或返回該類型的過程。不能用模塊名來限定 Enum 類型。類模塊中的 Public Enum 類型并不是該類的成員;只不過它們也被寫入到類型庫(kù)中。在標(biāo)準(zhǔn)模塊中定義的 Enum 類型則不寫到類型庫(kù)中。具有相同名字的 Public Enum 類型不能既在標(biāo)準(zhǔn)模塊中定義,又在類模塊中定義,因?yàn)樗鼈児蚕硐嗤拿臻g。若不同的類型庫(kù)中有兩個(gè) Enum 類型的名字相同,但成員不同,則對(duì)這種類型的變量的引用,將取決于哪一個(gè)類型庫(kù)具有更高的引用優(yōu)先級(jí)。
不能在 With 塊中使用 Enum 類型作為目標(biāo)。
Enum 語句示例
下面的示例演示用 Enum 語句定義一個(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
好處是加快編程速度