什么是编码约定?
编码约定是帮助您使用 Microsoft Visual Basic Scripting Edition 编写代码的一些建议。编码约定包含以下内容: 
·对象、变量和过程的命名约定 
·注释约定 
·文本格式和缩进指南 
使用一致的编码约定的主要原因是使 Script 或 Script 集的结构和编码样式标准化,这样代码易于阅读和理解。使用好的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定保持一致。 
常数命名约定
VBScript 的早期版本不允许创建用户自定义常数。如果要使用常数,则常数以变量的方式实现,且全部字母大写以和其他变量区分。常数名中的多个单词用下划线 (_) 分隔。例如: 
USER_LIST_MAX
NEW_LINE
这种标识常数的方法依旧可行,但您还可以选择其他方案,用 Const 语句创建真正的常数。这个
约定使用大小写混合的格式,并以“con”作为常数名的前缀。例如: 
conYourOwnConstant
变量命名约定
出于易读和一致性的目的,请在 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 | 
变量作用域
变量应定义在尽量小的作用域中。VBScript 变量的作用域如下所示: 
| 作用域 | 声明变量处 | 可见性 | 
| 过程级 | 事件、函数或子过程 | 在声明变量的过程中可见 | 
| Script 级 | HTML 页面的 HEAD 部分,任何过程之外 | 在 Script 的所有过程中可见 | 
变量作用域前缀
随着 Script 代码长度的增加,有必要快速区分变量的作用域。在类型前缀前面添加一个单字符前缀可以实现这一点,而不致使变量名过长。 
| 作用域 | 前缀 | 示例 | 
| 过程级 | 无 | dblVelocity | 
| Script 级 | s | sblnCalcInProgress | 
描述性变量名和过程名
变量名或过程名的主体应使用大小写混合格式,并且尽量完整地描述其目的。另外,过程名应以动词开始,例如 InitNameArray 或 CloseDialog。 
对于经常使用的或较长的名称,推荐使用标准缩写以使名称保持在适当的长度内。通常多于 32 个字符的变量名会变得难以阅读。使用缩写时,应确保在整个 Script 中保持一致。例如,在一个 Script 或 Script 集中随意切换 Cnt 和 Count 将造成混乱。 
对象命名约定
下表列出了 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 | 
代码注释约定
所有过程的开始部分都应有描述其功能的简要注释。这些注释并不描述细节信息(如何实现功能),这是因为细节有时要频繁更改。这样就可以避免不必要的注释维护工作以及错误的注释。细节信息由代码本身及必要的内部注释来描述。 
当传递给过程的参数的用途不明显,或过程对参数的取值范围有要求时,应加以说明。如果过程改变了函数和变量的返回值(特别是通过参数引用来改变),也应在过程的开始部分描述该返回值。 
过程开始部分的注释应包含以下区段标题。相关样例,请参阅后面的“格式化代码”部分。 
| 区段标题 | 注释内容 | 
| 目的 | 过程的功能(不是实现功能的方法)。 | 
| 假设 | 其状态影响此过程的外部变量、控件或其他元素的列表。 | 
| 效果 | 过程对每个外部变量、控件或其他元素的影响效果的列表。 | 
| 输入 | 每个目的不明显的参数的解释。每个参数都应占据单独一行并有其内部注释。 | 
| 返回 | 返回值的解释。 | 
请记住以下几点: 
·每个重要的变量声明都应有内部注释,描述变量的用途。 
·应清楚地命名变量、控件和过程,仅在说明复杂细节时需要内部注释。 
·应在 Script 的开始部分包含描述该 Script 的概述,列举对象、过程、运算法则、对话框和其他系统从属物。有时一段描述运算法则的假码是很有用的。 
格式化代码
应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示: 
·标准嵌套块应缩进 4 个空格。 
·过程的概述注释应缩进 1 个空格。 
·概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。例如: 
'*********************************************************
' 目的: 返回指定用户在 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
学习高级 VBScript 技术的最快方法是阅读大量的样例。同时更好地理解对象模型有助于深入学习 VBScript。 
您可以从以下部分开始学习: 
·ActiveX™ 控件常见问题解答 
·页面样例 
·热点链接页面
一个简单页面
使用 Microsoft? Internet Explorer 可以查看用以下 HTML 代码制作的页面。如果单击页面上的按钮,可看到 VBScript 的运行结果。 
<HTML>
<HEAD><TITLE>一个简单首页</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--
Sub Button1_OnClick
MsgBox "Mirabile visu."
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H3>一个简单首页</H3><HR>
<FORM><INPUT NAME="Button1" TYPE="BUTTON" VALUE="单击此处"></FORM>
</BODY>
</HTML> 
结果虽然有点简单:一个对话框显示一个拉丁短语(意为“看起来非常漂亮”)。然而这段代码实际上作了许多事情。 
当 Internet Explorer 读取页面时,找到 <SCRIPT> 标记,识别出 VBScript 代码并保存代码。单击按钮时,Internet Explorer 使按钮与代码连接,并运行该过程。 
<SCRIPT> 标记中的 Sub 过程是一个事件过程。过程名包含两部分:一部分为按钮名,即 Button1(从 <INPUT> 标记中的 NAME 属性获取),另一部分为事件名,即 OnClick。两部分由下划线 (_) 连接。单击按钮时,Internet Explorer 查找并运行相应的事件过程,即 Button1_OnClick。 
Internet Explorer 在 Internet Explorer Scripting Object Model 文档中定义了可用于窗体控件的事件。 
页面也可以使用控件与过程的组合。VBScript 与窗体显示了控件之间的一些简单交互作用。 
向事件附加代码的其他方法
上述的方法也许是最简单和最常用的,但也可以使用另外两种方法向事件附加 VBScript 代码。一种方法是在定义控件的标记中添加较短的内部代码。例如在单击按钮时,下面的 <INPUT> 标记执行与前面示例相同的操作: 
<INPUT NAME="Button1" TYPE="BUTTON"
VALUE="单击此处" OnClick='MsgBox "Mirabile visu."'>
请注意函数调用包含在单引号中,MsgBox 函数的字符串包含在双引号中。只要用冒号 (:) 分隔语句,就可以使用多条语句。 
另一种方法是在 <SCRIPT> 标记中指定特定的控件和事件: 
<SCRIPT LANGUAGE="VBScript" EVENT="OnClick" FOR="Button1">
<!--
MsgBox "Mirabile visu."
-->
</SCRIPT>
由于 <SCRIPT> 标记指定了事件和控件,所以不需要再用 Sub 和 End Sub 语句。
