VBScript教程 第十課 VBScript編碼約定
2020-07-26 12:14:56
供稿:網(wǎng)友
什么是編碼約定?
編碼約定是幫助您使用 Microsoft Visual Basic Scripting Edition 編寫代碼的一些建議。編碼約定包含以下內(nèi)容:
?對(duì)象、變量和過(guò)程的命名約定
?注釋約定
?文本格式和縮進(jìn)指南
使用一致的編碼約定的主要原因是使 Script 或 Script 集的結(jié)構(gòu)和編碼樣式標(biāo)準(zhǔn)化,這樣代碼易于閱讀和理解。使用好的編碼約定可以使源代碼明白、易讀、準(zhǔn)確,更加直觀且與其他語(yǔ)言約定保持一致。
常數(shù)命名約定
VBScript 的早期版本不允許創(chuàng)建用戶自定義常數(shù)。如果要使用常數(shù),則常數(shù)以變量的方式實(shí)現(xiàn),且全部字母大寫以和其他變量區(qū)分。常數(shù)名中的多個(gè)單詞用下劃線 (_) 分隔。例如:
USER_LIST_MAX
NEW_LINE
這種標(biāo)識(shí)常數(shù)的方法依舊可行,但您還可以選擇其他方案,用 Const 語(yǔ)句創(chuàng)建真正的常數(shù)。這個(gè)
約定使用大小寫混合的格式,并以"con"作為常數(shù)名的前綴。例如:
conYourOwnConstant
變量命名約定
出于易讀和一致性的目的,請(qǐng)?jiān)?VBScript 代碼中使用以下變量命名約定:
子類型 前綴 示例
Boolean bln blnFound
Byte byt bytRasterData
Date (Time) dtm dtmStart
Double dbl dblTolerance
Error err errOrderNum
Integer int intQuantity
Long lng lngDistance
Object obj objCurrent
Single sng sngAverage
String str strFirstName
變量作用域
變量應(yīng)定義在盡量小的作用域中。VBScript 變量的作用域如下所示:
作用域 聲明變量處 可見性
過(guò)程級(jí) 事件、函數(shù)或子過(guò)程 在聲明變量的過(guò)程中可見
Script 級(jí) HTML 頁(yè)面的 HEAD 部分,任何過(guò)程之外 在 Script 的所有過(guò)程中可見
變量作用域前綴
隨著 Script 代碼長(zhǎng)度的增加,有必要快速區(qū)分變量的作用域。在類型前綴前面添加一個(gè)單字符前綴可以實(shí)現(xiàn)這一點(diǎn),而不致使變量名過(guò)長(zhǎng)。
作用域 前綴 示例
過(guò)程級(jí) 無(wú) dblVelocity
Script 級(jí) s sblnCalcInProgress
描述性變量名和過(guò)程名
變量名或過(guò)程名的主體應(yīng)使用大小寫混合格式,并且盡量完整地描述其目的。另外,過(guò)程名應(yīng)以動(dòng)詞開始,例如 InitNameArray 或 CloseDialog。
對(duì)于經(jīng)常使用的或較長(zhǎng)的名稱,推薦使用標(biāo)準(zhǔn)縮寫以使名稱保持在適當(dāng)?shù)拈L(zhǎng)度內(nèi)。通常多于 32 個(gè)字符的變量名會(huì)變得難以閱讀。使用縮寫時(shí),應(yīng)確保在整個(gè) Script 中保持一致。例如,在一個(gè) Script 或 Script 集中隨意切換 Cnt 和 Count 將造成混亂。
對(duì)象命名約定
下表列出了 VBScript 中可能用到的對(duì)象命名約定(推薦):
對(duì)象類型 前綴 示例
3D 面板 pnl pnlGroup
動(dòng)畫按鈕 ani aniMailBox
復(fù)選框 chk chkReadOnly
組合框、下拉列表框 cbo cboEnglish
命令按鈕 cmd cmdExit
公共對(duì)話框 dlg dlgFileOpen
框架 fra fraLanguage
水平滾動(dòng)條 hsb hsbVolume
圖像 img imgIcon
標(biāo)簽 lbl lblHelpMessage
直線 lin linVertical
列表框 lst lstPolicyCodes
旋鈕 spn spnPages
文本框 txt txtLastName
垂直滾動(dòng)條 vsb vsbRate
滑塊 sld sldScale
代碼注釋約定
所有過(guò)程的開始部分都應(yīng)有描述其功能的簡(jiǎn)要注釋。這些注釋并不描述細(xì)節(jié)信息(如何實(shí)現(xiàn)功能),這是因?yàn)榧?xì)節(jié)有時(shí)要頻繁更改。這樣就可以避免不必要的注釋維護(hù)工作以及錯(cuò)誤的注釋。細(xì)節(jié)信息由代碼本身及必要的內(nèi)部注釋來(lái)描述。
當(dāng)傳遞給過(guò)程的參數(shù)的用途不明顯,或過(guò)程對(duì)參數(shù)的取值范圍有要求時(shí),應(yīng)加以說(shuō)明。如果過(guò)程改變了函數(shù)和變量的返回值(特別是通過(guò)參數(shù)引用來(lái)改變),也應(yīng)在過(guò)程的開始部分描述該返回值。
過(guò)程開始部分的注釋應(yīng)包含以下區(qū)段標(biāo)題。相關(guān)樣例,請(qǐng)參閱后面的"格式化代碼"部分。
區(qū)段標(biāo)題 注釋內(nèi)容
目的 過(guò)程的功能(不是實(shí)現(xiàn)功能的方法)。
假設(shè) 其狀態(tài)影響此過(guò)程的外部變量、控件或其他元素的列表。
效果 過(guò)程對(duì)每個(gè)外部變量、控件或其他元素的影響效果的列表。
輸入 每個(gè)目的不明顯的參數(shù)的解釋。每個(gè)參數(shù)都應(yīng)占據(jù)單獨(dú)一行并有其內(nèi)部注釋。
返回 返回值的解釋。
請(qǐng)記住以下幾點(diǎn):
?每個(gè)重要的變量聲明都應(yīng)有內(nèi)部注釋,描述變量的用途。
?應(yīng)清楚地命名變量、控件和過(guò)程,僅在說(shuō)明復(fù)雜細(xì)節(jié)時(shí)需要內(nèi)部注釋。
?應(yīng)在 Script 的開始部分包含描述該 Script 的概述,列舉對(duì)象、過(guò)程、運(yùn)算法則、對(duì)話框和其他系統(tǒng)從屬物。有時(shí)一段描述運(yùn)算法則的假碼是很有用的。
格式化代碼
應(yīng)盡可能多地保留屏幕空間,但仍允許用代碼格式反映邏輯結(jié)構(gòu)和嵌套。以下為幾點(diǎn)提示:
?標(biāo)準(zhǔn)嵌套塊應(yīng)縮進(jìn) 4 個(gè)空格。
?過(guò)程的概述注釋應(yīng)縮進(jìn) 1 個(gè)空格。
?概述注釋后的最高層語(yǔ)句應(yīng)縮進(jìn) 4 個(gè)空格,每一層嵌套塊再縮進(jìn) 4 個(gè)空格。例如:
'*********************************************************
' 目的: 返回指定用戶在 UserList 數(shù)組中第一次出現(xiàn)的位置。
' 輸入: strUserList(): 所查找的用戶列表。
' strTargetUser: 要查找的用戶名。
' 返回: strTargetUser 在 strUserList 數(shù)組中第一次出現(xiàn)時(shí)的索引。
' 如果目標(biāo)用戶未找到,返回 -1。
'*********************************************************
Function intFindUser (strUserList(), strTargetUser)
Dim i ' 循環(huán)計(jì)數(shù)器。
Dim blnFound ' 發(fā)現(xiàn)目標(biāo)的標(biāo)記。
intFindUser = -1
i = 0 ' 初始化循環(huán)計(jì)數(shù)器。
Do While i <= Ubound(strUserList) and Not blnFound
If strUserList(i) = strTargetUser Then
blnFound = True ' 標(biāo)記設(shè)為 True。
intFindUser = i ' 返回值設(shè)為循環(huán)計(jì)數(shù)器。
End If
i = i + 1 ' 循環(huán)計(jì)數(shù)器加 1。
Loop
End Function