對于經常使用的或較長的名稱,推薦使用標準縮寫以使名稱保持在適當的長度內。通常多于 32 個字符的變量名會變得難以閱讀。使用縮寫時,應確保在整個 Script 中保持一致。例如,在一個 Script 或 Script 集中隨意切換 Cnt 和 Count 將造成混亂。
當傳遞給過程的參數的用途不明顯,或過程對參數的取值范圍有要求時,應加以說明。如果過程改變了函數和變量的返回值(特別是通過參數引用來改變),也應在過程的開始部分描述該返回值。
過程開始部分的注釋應包含以下區段標題。相關樣例,請參閱后面的“格式化代碼”部分。
什么是編碼約定?
編碼約定是幫助您使用 Microsoft Visual Basic Scripting Edition 編寫代碼的一些建議。
編碼約定包含以下內容:
使用一致的編碼約定的主要原因是使 Script 或 Script 集的結構和編碼樣式標準化,這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準確,更加直觀且與其他語言約定保持一致。 常數命名約定
VBScript 的早期版本不允許創建用戶自定義常數。如果要使用常數,則常數以變量的方式實現,且全部字母大寫以和其他變量區分。常數名中的多個單詞用下劃線 (_) 分隔。例如:
這種標識常數的方法依舊可行,但您還可以選擇其他方案,用 Const 語句創建真正的常數。這個約定使用大小寫混合的格式,并以“con”作為常數名的前綴。例如:
USER_LIST_MAX
NEW_LINE
conYourOwnConstant
變量命名約定
出于易讀和一致性的目的,請在 VBScript 代碼中使用以下變量命名約定:
子類型前綴
示例
Booleanbln
blnFound
Bytebyt
bytRasterData
Date (Time)dtm
dtmStart
Doubledbl
dblTolerance
Errorerr
errOrderNum
Integerint
intQuantity
Longlng
lngDistance
Objectobj
objCurrent
Singlesng
sngAverage
Stringstr
strFirstName
變量作用域
變量應定義在盡量小的作用域中。VBScript 變量的作用域如下所示:
作用域聲明變量處
可見性
過程級事件、函數或子過程
在聲明變量的過程中可見
Script 級HTML 頁面的 HEAD 部分,任何過程之外
在 Script 的所有過程中可見
變量作用域前綴
隨著 Script 代碼長度的增加,有必要快速區分變量的作用域。在類型前綴前面添加一個單字符前綴可以實現這一點,而不致使變量名過長。
作用域前綴
示例
過程級無
dblVelocity
Script 級s
sblnCalcInProgress
描述性變量名和過程名
變量名或過程名的主體應使用大小寫混合格式,并且盡量完整地描述其目的。另外,過程名應以動詞開始,例如 InitNameArray 或 CloseDialog。
對象命名約定
下表列出了 VBScript 中可能用到的對象命名約定(推薦):
對象類型前綴
示例
3D 面板pnl
pnlGroup
動畫按鈕ani
aniMailBox
復選框chk
chkReadOnly
組合框、下拉列表框cbo
cboEnglish
命令按鈕cmd
cmdExit
公共對話框dlg
dlgFileOpen
框架fra
fraLanguage
水平滾動條hsb
hsbVolume
圖像img
imgIcon
標簽lbl
lblHelpMessage
直線lin
linVertical
列表框lst
lstPolicyCodes
旋鈕spn
spnPages
文本框txt
txtLastName
垂直滾動條vsb
vsbRate
滑塊sld
sldScale
代碼注釋約定
所有過程的開始部分都應有描述其功能的簡要注釋。這些注釋并不描述細節信息(如何實現功能),這是因為細節有時要頻繁更改。這樣就可以避免不必要的注釋維護工作以及錯誤的注釋。細節信息由代碼本身及必要的內部注釋來描述。
請記住以下幾點:
區段標題
注釋內容
目的
過程的功能(不是實現功能的方法)。
假設
其狀態影響此過程的外部變量、控件或其他元素的列表。
效果
過程對每個外部變量、控件或其他元素的影響效果的列表。
輸入
每個目的不明顯的參數的解釋。每個參數都應占據單獨一行并有其內部注釋。
返回
返回值的解釋。
格式化代碼
應盡可能多地保留屏幕空間,但仍允許用代碼格式反映邏輯結構和嵌套。以下為幾點提示:
'*********************************************************
' 目的: 返回指定用戶在 UserList 數組中第一次出現的位置。
' 輸入: strUserList(): 所查找的用戶列表。
' strTargetUser: 要查找的用戶名。
' 返回: strTargetUser 在 strUserList 數組中第一次出現時的索引。
' 如果目標用戶未找到,返回 -1。
'*********************************************************
Function intFindUser (strUserList(), strTargetUser)
Dim i ' 循環計數器。
Dim blnFound ' 發現目標的標記。
intFindUser = -1
i = 0 ' 初始化循環計數器。
Do While i <= Ubound(strUserList) and Not blnFound
If strUserList(i) = strTargetUser Then
blnFound = True ' 標記設為 True。
intFindUser = i ' 返回值設為循環計數器。
End If
i = i + 1 ' 循環計數器加 1。
Loop
End Function