1、"&"替換"+"
2.變數命名大小寫,語句錯落有秩,原始碼維護方面
3.請養成以下的「對象命名約定」良好習慣
4.在簡單的選擇條件情況下,使用IIf()函數
5.盡量使用Debug.Print進行調試
6.在重複對某一物件的屬性進行修改時,盡量使用With....End With
7.MsgBox中盡量使用訊息圖標,這樣程式比較有規範8、在可能的情況下使用枚舉
1、"&"替換"+"
在許多人的程式語言中,用“+”來連接字串,這樣容易導致歧義。良好的習慣是用「&」來連接字串.
不正確:
Dim sMessage As String
sMessage = "1" + "2"
正確:
Dim sMessage As String
sMessage = "1" & "2"
注意:"&"的後面有個空格
2.變數命名大小寫,語句錯落有秩,原始碼維護方面
下面大家比較一下以下兩段程式碼:
讀懂難度很高的程式碼:
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.請養成以下的「對象命名約定」良好習慣
推薦使用的控制前綴
控制項類型前綴例子
3D Panel pnl pnlGroup
ADO Data ado adoBiblio
Animated button ani aniMailBox
Check box chk chkReadOnly
Combo box, drop-down list box cbo cboEnglish
Command button cmd cmdExit
Common dialog dlg dlgFileOpen
Communications com comFax
Control (當特定類型未知時,過程中所使用的) ctr ctrCurrent
Data dat datBiblio
Data-bound combo box dbcbo dbcboLanguage
Data-bound grid dbgrd dbgrdQueryResult
Data-bound list box dblst dblstJobType
Data combo dbc dbcAuthor
Data grid dgd dgdTitles
Data list dbl dblPublisher
Data repeater drp drpLocation
Date picker dtp dtpPublished
Directory list box dir dirSource
Drive list box drv drvTarget
File list box fil filSource
Flat scroll bar fsb fsbMove
Form frm frmEntry
Frame fra fraLanguage
Gauge gau gauStatus
Graph gra graRevenue
Grid grd grdPrices
Hierarchical flexgrid flex flexOrders
Horizontal scroll bar hsb hsbVolume
Image img imgIcon
Image combo imgcbo imgcboProduct
ImageList ils ilsAllIcons
Label lbl lblHelpMessage
Lightweight check box lwchk lwchkArchive
Lightweight combo box lwcbo lwcboGerman
Lightweight command button lwcmd lwcmdRemove
Lightweight frame lwfra lwfraSaveOptions
Lightweight horizontal scroll bar lwhsb lwhsbVolume
Lightweight list box lwlst lwlstCostCenters
Lightweight option button lwopt lwoptIncomeLevel
Lightweight text box lwtxt lwoptStreet
Lightweight vertical scroll bar lwvsb lwvsbYear
Line lin linVertical
List box lst lstPolicyCodes
ListView lvw lvwHeadings
MAPI message mpm mpmSentMessage
MAPI session mps mpsSession
MCI mci mciVideo
Menu mnu mnuFileOpen
Month view mvw mvwPeriod
MS Chart ch chSalesbyRegion
MS Flex grid msg msgClients
MS Tab mst mstFirst
OLE container ole oleWorksheet
Option button opt optGender
Picture box pic picVGA
Picture clip clp clpToolbar
ProgressBar prg prgLoadFile
Remote Data rd rdTitles
RichTextBox rtf rtfReport
Shape shp shpCircle
Slider sld sldScale
Spin spn spnPages
StatusBar sta staDateTime
SysInfo sys sysMonitor
TabStrip tab tabOptions
Text box txt txtLastName
Timer tmr tmrAlarm
Toolbar tlb tlbActions
TreeView tre treOrganization
UpDown upd updDirection
Vertical scroll bar vsb vsbRate
-------------------------------------------------- ------------------------------
建議使用的資料存取對象(DAO) 的前綴
用下列前綴來指示資料存取對象
資料庫物件前綴例子
Container con conReports
Database db dbAccounts
DBEngine dbe dbeJet
Document doc docSalesReport
Field fld fldAddress
Group grp grpFinance
Index ix idxAge
Parameter prm prmJobCode
QueryDef qry qrySalesByRegion
Recordset rec recForecast
Relation rel relEmployeeDept
TableDef tbd tbdCustomers
User usr usrNew
Workspace wsp wspMine
-------------------------------------------------- ------------------------------
應用程式經常使用許多選單控件,對於這些控件具備一組唯一的命名約定很實用。除了最前面"mnu" 標記以外,選單控制項的前綴應該被擴展:對每一層嵌套增加一個附加前綴,將最終的選單的標題放在名稱字串的最後。下表列出了一些例子。
推薦使用的選單前綴
選單標題序列選單處理器名稱
File Open mnuFileOpen
File Send Email mnuFileSendEmail
File Send Fax mnuFileSendFax
Format Character mnuFormatCharacter
Help Contents mnuHelpContents
當使用這種命名約定時,一個特定的選單組的所有成員都會一個接一個地列在Visual Basic 的「屬性」視窗中。而且,選單控制項的名字清楚地表示出它們所屬的選單項目。
為其它控制項選擇前綴
對於上面沒有列出的控件,應該用唯一的由兩個或三個字元組成的前綴使它們標準化,以保持一致性。只有當需要澄清時,才使用多於三個字元的前綴。
常數和變數命名約定
除了物件之外,常數和變數也需要良好格式的命名約定。本節列出了Visual Basic 支援的常數和變數的建議約定。並且討論標識資料類型和範圍的問題。
變數應該總是被定義在盡可能小的範圍內。全域(Public) 變數可以導致極其複雜的狀態機構,並且使一個應用程式的邏輯非常難於理解。全域變數也使程式碼的重用和維護更加困難。
Visual Basic 中的變數可以有下列範圍
範圍聲明位置可見位置
過程級過程,子過程或函數過程中的'Private' 在聲明它的過程中
模組級窗體或程式碼模組(.frm、.bas )的聲明部分中的'Private' 窗體或程式碼模組中的每一個過程
全域程式碼模組(.bas)的聲明部分中的'Public' 應用程式中的每一處
在Visual Basic 的應用程式中,只有當沒有其它方便途徑在窗體之間共享資料時才使用全域變數。當必須使用全域變數時,在單一模組中聲明它們,並按功能分組。給這個模組一個有意義的名稱,以指明它的作用,如Public.bas。
較好的編碼習慣是盡可能寫出模組化的程式碼。例如,如果應用程式顯示一個對話框,就把要完成這項對話任務所需的所有控制項和程式碼放在單一的窗體中。這有助於將應用程式的程式碼組織在有用的元件中,並減少它運行時的開銷。
除了全域變數(應該是不被傳遞的),過程和函數應該僅對傳遞給它們的物件操作。在過程中使用的全域變數應該在過程起始處的聲明部分中標識出來。此外,應該用ByVal 將參數傳遞給Sub 過程及function 過程,除非明顯地需要改變已傳遞的參數值。
隨著工程大小的成長,劃分變數範圍的工作也迅速增加。在類型前綴的前面放置單字母範圍前綴標明了這種增長,但變數名稱的長度並沒有增加很多。
變數範圍前綴
範圍前綴例子
全域g gstrUserName
模組級m mblnCalcInProgress
本地到過程無dblVelocity
如果一個變數在標準模組或窗體模組中被宣告為Public,那麼變數具有全域範圍。如果一個變數在標準模組或窗體模組中被分別宣告為Private,那麼該變數有模組級範圍。
注意: 一致性是卓有成效地使用此技術的關鍵;Visual Basic 中的語法檢查器不會捕捉以"p." 開頭的模組級變數。
常量
常量名的主體是大小寫混合的,每個字的首字母大寫。儘管標準Visual Basic 常數不包含資料類型和範圍信息,但是像i、s、g 和m 這樣的前綴對於理解一個常數的值和範圍還是很有用的。對於常量名,應遵循與變數相同的規則。例如:
mintUserListMax '對使用者清單的最大限制
'(整數值,本地到模組)
gstrNewLine '新行字符
'(字串,應用程式全域使用)
變數
宣告所有的變數將會節省程式設計時間,因為鍵入操作所造成的錯誤減少了(例如,究竟是aUserNameTmp,還是sUserNameTmp,還是sUserNameTemp)。在「選項」對話方塊的「編輯器」標籤中,複選「要求變數宣告」選項。 Option Explicit 語句要求在Visual Basic 程式中宣告所有的變數。
應該給變數加前綴來指明它們的資料類型。而且前綴可以被擴展,用來指明變數範圍,特別是對大型程式。
用下列前綴來指明一個變數的資料型態。
變數資料型
資料類型前綴例子
String (字串型別) str strFName
Integer (短整數型別) int intQuantity
Long (長整數型) lng lngDistance
Single (單精確度浮點數類型) sng sngAverage
Double (雙精確度浮點數類型) dbl dblTolerance
Boolean (布林類型) bln blnFound
Byte (位元組類型) byt bytRasterData
Date (日期類型) dte dteNow
Currency (貨幣計算與定點計算類型) cur curRevenue
Object (物件型別) obj objCurrent
Variant (變異型) vnt vntCheckSum
描述變數和過程名
變數或過程名的主體應該使用大小寫混合形式,並且應該足夠長以描述它的作用。而且,函數名稱應該以一個動詞起首,如InitNameArray 或CloseDialog。
對於頻繁使用的或長的項,建議使用標準縮寫以使名稱的長度合理化。一般來說,超過32 個字元的變數名稱在VGA 顯示器上讀起來就困難了。
當使用縮寫時,請確保它們在整個應用程式中的一致性。在一個工程中,如果一會兒使用Cnt, 一會兒使用Count,將導致不必要的混淆。
使用者定義的類型
在一項有許多使用者定義類型的大工程中,常常有必要給每種類型一個它自己的三個字元的前綴。如果這些前綴是以"u" 開始的,那麼當用一個使用者定義類型來工作時,快速識別這些類型是很容易的。例如,ucli 可以用來作為一個使用者定義的客戶類型變數的前綴。
[返回索引]
4.在簡單的選擇條件情況下,使用IIf()函數
羅索的代碼:
If nNum = 0 Then
sName = "sancy"
Else
sName = "Xu"
End If
簡單的程式碼:
sName=IIf(nNum=0,"sancy","Xu")
5.盡量使用Debug.Print進行調試
在許多初學者的調試中,用MsgBox來跟踪變量值.其實用Debug.Print不僅可以達到同樣的功效,而且在程序最後編譯過程中,會被忽略.而MsgBox必須手動註釋或刪除.
通常:
MsgBox nName
應該:
Debug.Print nName
6.在重複對某一物件的屬性進行修改時,盡量使用With....End With
通常:
Form1.Height = 5000
Form1.Width = 6000
Form1.Caption = "This is MyLabel"
應該:
With Form1
.Height = 5000
.Width = 6000
.Caption = "This is MyLabel"
End With
這種結構程序執行效率比較高,特別在迴圈語句裡。
7.MsgBox中盡量使用訊息圖標,這樣程式比較有規範
一般來說
vbInformation 用來提示確認或成功操作的訊息
vbExclamation 用來提示警告的訊息
vbCritical 用來提示危機狀況的消息
vbQuestion 用來提示詢問的訊息
[返回索引]
8.在可能的情況下使用枚舉
枚舉的格式為
[Public | 排] Enum name
membername [= constantexpression]
membername [= constantexpression]
....
End Enum
Enum 語句包含以下部分:
部分描述
Public 可選的。表示該Enum 類型在整個工程中都是可見的。 Enum 類型的缺省情況是Public。
Private 可選的。表示該Enum 類型只在所宣告的模組中是可見的。
name 必需的。該Enum 類型的名稱。 name 必須是合法的Visual Basic 標識符,在定義該Enum 類型的變數或參數時用該名稱來指定類型。
membername 必需的。用於指定該Enum 類型的組成元素名稱的合法Visual Basic 標識符。
constantexpression 可選配的。元素的值(為Long 類型)。可以是別的Enum 類型。如果沒有指定constantexpression,則所賦給的值或是0(如果該元素是第一個membername),或比其直接前輪驅動的值大1。
說明
所謂枚舉變量,就是指用Enum 類型定義的變數。變數和參數都可以定義為Enum 類型。 Enum 類型中的元素被初始化為Enum 語句中指定的常數值。賦給的值可以包括正數和負數,且在運行時不能改變。例如:
Enum SecurityLevel IllegalEntry = -1 SecurityLevel1 = 0 SecurityLevel2 = 1 End Enum
Enum 語句只能在模組層級中出現。定義Enum 類型後,就可以用它來定義變量,參數或傳回該類型的過程。不能用模組名來限定Enum 類型。類別模組中的Public Enum 類型並不是該類別的成員;只不過它們也被寫入到類型庫中。在標準模組中定義的Enum 類型則不寫到類型庫中。具有相同名字的Public Enum 類型不能既在標準模組中定義,又在類別模組中定義,因為它們共享相同的命名空間。若不同的型別庫中有兩個Enum 類型的名字相同,但成員不同,則對此類型的變數的引用,將取決於哪一個型別庫具有較高的引用優先權。
不能在With 區塊中使用Enum 類型作為目標。
Enum 語句範例
下面的範例示範用Enum 語句定義一個命名常數的集合。在本例中是一些可以選擇的顏色常數用於設計資料庫的資料輸入窗體。
Public Enum InterfaceColors
icMistyRose = &HE1E4FF&
icSlateGray = &H908070&
icDodgerBlue = &HFF901E&
icDeepSkyBlue = &HFFBF00&
icSpringGreen = &H7FFF00&
icForestGreen = &H228B22&
icGoldenrod = &H20A5DA&
icFirebrick = &H2222B2&
End Enum
好處是加快程式速度