vbscript:VBScript 编码约定



<h5>什么是编码约定?</h5>


<p>编码约定是帮助您使用 Microsoft Visual Basic Scripting Edition
编写代码些建议编码约定包含以下内容: <ul>
<li>对象、变量和过程命名约定 </li>
<li>注释约定 </li>
<li>文本格式和缩进指南 </li>
</ul>
<p>使用编码约定主要原因是使 Script 或 Script
结构和编码样式标准化这样代码易于阅读和理解使用好编码约定可以使源代码明白、易读、准确更加直观且和其他语言约定保持
</p>


<h5>常数命名约定</h5>


<p>VBScript
早期版本不允许创建用户自定义常数如果要使用常数则常数以变量方式实现且全部字母大写以和其他变量区分常数名中多个单词用下划线
(_) 分隔例如: </p>

<font FACE=\"宋体\" SIZE=\"3\"> USER_LIST_MAX
NEW_LINE
</font>

<p>这种标识常数思路方法依旧可行但您还可以选择其他方案用 <b>Const</b>
语句创建真正常数这个约定使用大小写混合格式并以“con”作为常数名前缀例如:
</p>

<font FACE=\"宋体\" SIZE=\"3\"> conYourOwnConstant
</font>

<h5>变量命名约定</h5>


<p>出于易读和致性请在 VBScript
代码中使用以下变量命名约定:</p>
<table WIDTH=\"87%\" BORDER=\"1\" CELLPADDING=\"5\" CELLSPACING=\"0\">
<tr BGCOLOR=\"#DDDDDD\" VALIGN=\"TOP\">
<td><font SIZE=\"2\"><b>子类型</b></font></td>
<td><font SIZE=\"2\"><b>前缀</b></font></td>
<td><font SIZE=\"2\"><b>举例</b></font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Boolean</font></td>
<td><font SIZE=\"2\">bln</font></td>
<td><font SIZE=\"2\">blnFound</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Byte</font></td>
<td><font SIZE=\"2\">byt</font></td>
<td><font SIZE=\"2\">bytRasterData</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Date (Time)</font></td>
<td><font SIZE=\"2\">dtm</font></td>
<td><font SIZE=\"2\">dtmStart</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Double</font></td>
<td><font SIZE=\"2\">dbl</font></td>
<td><font SIZE=\"2\">dblTolerance</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Error</font></td>
<td><font SIZE=\"2\">err</font></td>
<td><font SIZE=\"2\">errOrderNum</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Integer</font></td>
<td><font SIZE=\"2\"></font></td>
<td><font SIZE=\"2\">Quantity</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Long</font></td>
<td><font SIZE=\"2\">lng</font></td>
<td><font SIZE=\"2\">lngDistance</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Object</font></td>
<td><font SIZE=\"2\">obj</font></td>
<td><font SIZE=\"2\">objCurrent</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Single</font></td>
<td><font SIZE=\"2\">sng</font></td>
<td><font SIZE=\"2\">sngAverage</font></td>


</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">String</font></td>
<td><font SIZE=\"2\">str</font></td>
<td><font SIZE=\"2\">strFirstName</font></td>
</tr>
</table>


<h5>变量作用域</h5>


<p>变量应定义在尽量小作用域中VBScript 变量作用域如下所示:</p>
<table WIDTH=\"87%\" BORDER=\"1\" CELLPADDING=\"5\" CELLSPACING=\"0\">
<tr BGCOLOR=\"#DDDDDD\" VALIGN=\"TOP\">
<td><font SIZE=\"2\"><b>作用域</b></font></td>
<td><font SIZE=\"2\"><b>声明变量处</b></font></td>
<td><font SIZE=\"2\"><b>可见性</b></font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">过程级</font></td>
<td><font SIZE=\"2\">事件、或子过程</font></td>
<td><font SIZE=\"2\">在声明变量过程中可见</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Script 级</font></td>
<td><font SIZE=\"2\">HTML 页面 HEAD 部分任何过程的外</font></td>
<td><font SIZE=\"2\">在 Script 所有过程中可见</font></td>
</tr>
</table>
<h5>变量作用域前缀</h5>
<p>随着 Script
代码长度增加有必要快速区分变量作用域在类型前缀前面添加个单前缀可以实现这而不致使变量名过长</p>
<table WIDTH=\"87%\" BORDER=\"1\" CELLPADDING=\"5\" CELLSPACING=\"0\">
<tr BGCOLOR=\"#DDDDDD\" VALIGN=\"TOP\">
<td><font SIZE=\"2\"><b>作用域</b></font></td>
<td><font SIZE=\"2\"><b>前缀</b></font></td>
<td><font SIZE=\"2\"><b>举例</b></font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">过程级</font></td>
<td><font SIZE=\"2\">无</font></td>
<td><font SIZE=\"2\">dblVelocity</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">Script 级</font></td>
<td><font SIZE=\"2\">s</font></td>
<td><font SIZE=\"2\">sblnCalcInProgress</font></td>
</tr>
</table>


<h5>描述性变量名和过程名</h5>


<p>变量名或过程名主体应使用大小写混合格式并且尽量完整地描述其目另外过程名应以动词开始例如
InitNameArray 或 CloseDialog</p>
<p>对于经常使用或较长名称推荐使用标准缩写以使名称保持在适当长度内通常多于
32 个变量名会变得难以阅读使用缩写时应确保在整个
Script 中保持例如个 Script 或 Script 集中随意切换 Cnt 和
Count 将造成混乱 </p>


<h5>对象命名约定</h5>


<p>下表列出了 VBScript 中可能用到对象命名约定(推荐):</p>
<table WIDTH=\"87%\" BORDER=\"1\" CELLPADDING=\"5\" CELLSPACING=\"0\">
<tr BGCOLOR=\"#DDDDDD\" VALIGN=\"TOP\">
<td><font SIZE=\"2\"><b>对象类型</b></font></td>
<td><font SIZE=\"2\"><b>前缀</b></font></td>
<td><font SIZE=\"2\"><b>举例</b></font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">3D 面板</font></td>
<td><font SIZE=\"2\">pnl</font></td>
<td><font SIZE=\"2\">pnlGroup</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">动画

按钮</font></td>
<td><font SIZE=\"2\">ani</font></td>
<td><font SIZE=\"2\">aniMailBox</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">复选框</font></td>
<td><font SIZE=\"2\">chk</font></td>
<td><font SIZE=\"2\">chkReadOnly</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">组合框、下拉列表框</font></td>
<td><font SIZE=\"2\">cbo</font></td>
<td><font SIZE=\"2\">cboEnglish</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">命令按钮</font></td>
<td><font SIZE=\"2\">cmd</font></td>
<td><font SIZE=\"2\">cmdExit</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">公共对话框</font></td>
<td><font SIZE=\"2\">dlg</font></td>
<td><font SIZE=\"2\">dlgFileOpen</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">框架</font></td>
<td><font SIZE=\"2\">fra</font></td>
<td><font SIZE=\"2\">fraLanguage</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">水平滚动条</font></td>
<td><font SIZE=\"2\">hsb</font></td>
<td><font SIZE=\"2\">hsbVolume</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">图像</font></td>
<td><font SIZE=\"2\">img</font></td>
<td><font SIZE=\"2\">imgIcon</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">标签</font></td>
<td><font SIZE=\"2\">lbl</font></td>
<td><font SIZE=\"2\">lblHelpMessage</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">直线</font></td>
<td><font SIZE=\"2\">lin</font></td>
<td><font SIZE=\"2\">linVertical</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">列表框</font></td>
<td><font SIZE=\"2\">lst</font></td>
<td><font SIZE=\"2\">lstPolicyCodes</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">旋钮</font></td>
<td><font SIZE=\"2\">spn</font></td>
<td><font SIZE=\"2\">spnPages</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">文本框</font></td>
<td><font SIZE=\"2\">txt</font></td>
<td><font SIZE=\"2\">txtLastName</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">垂直滚动条</font></td>
<td><font SIZE=\"2\">vsb</font></td>
<td><font SIZE=\"2\">vsbRate</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td><font SIZE=\"2\">滑块</font></td>
<td><font SIZE=\"2\">sld</font></td>
<td><font SIZE=\"2\">sldScale</font></td>


</tr>
</table>

<h5>代码注释约定</h5>


<p>所有过程开始部分都应有描述其功能简要注释这些注释并不描述细节信息(如何实现功能)这是细节有时要频繁更改这样就可以避免不必要注释维护工作以及注释细节信息由代码本身及必要内部注释来描述</p>
<p>当传递给过程参数用途不明显或过程对参数取值范围有要求时应加以介绍说明如果过程改变了和变量返回值(特别是通过参数引用来改变)也应在过程开始部分描述该返回值</p>
<p>过程开始部分注释应包含以下区段标题相关样例请参阅后面“格式化代码”部分</p>
<table WIDTH=\"87%\" BORDER=\"1\" CELLPADDING=\"5\" CELLSPACING=\"0\">
<tr BGCOLOR=\"#DDDDDD\" VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\"><b>区段标题</b></font></td>
<td><font SIZE=\"2\"><b>注释内容</b></font></td>
</tr>
<tr VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\">目</font></td>
<td><font SIZE=\"2\">过程功能(不是实现功能思路方法)</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\">假设</font></td>
<td><font SIZE=\"2\">其状态影响此过程外部变量、Control控件或其他元素列表</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\">效果</font></td>
<td><font SIZE=\"2\">过程对每个外部变量、Control控件或其他元素影响效果列表</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\">输入</font></td>
<td><font SIZE=\"2\">每个目不明显参数解释每个参数都应占据单独行并有其内部注释</font></td>
</tr>
<tr VALIGN=\"TOP\">
<td WIDTH=\"15%\"><font SIZE=\"2\">返回</font></td>
<td><font SIZE=\"2\">返回值解释</font></td>
</tr>
</table>
<p>请记住以下几点: <ul>
<li>每个重要变量声明都应有内部注释描述变量用途 </li>
<li>应清楚地命名变量、Control控件和过程仅在介绍说明复杂细节时需要内部注释
</li>
<li>应在 Script 开始部分包含描述该 Script
概述列举对象、过程、运算法则、对话框和其他系统从属物有时段描述运算法则假码是很有用
</li>
</ul>


<h5>格式化代码</h5>


<p>应尽可能多地保留屏幕空间但仍允许用代码格式反映逻辑结构和嵌套以下为几点提示:
<ul>
<li>标准嵌套块应缩进 4 个空格 </li>
<li>过程概述注释应缩进 1 个空格 </li>
<li>概述注释后最高层语句应缩进 4 个空格层嵌套块再缩进 4
个空格例如: </li>
</ul>

<font FACE=\"宋体\" SIZE=\"3\">
\'*********************************************************
\' 目: 返回指定用户在 UserList 中第次出现位置
\' 输入: strUserList: 所查找用户列表
\' strTargetUser: 要查找用户名
\' 返回: strTargetUser 在 strUserList 中第次出现时索引
\' 如果目标用户未找到返回 -1
\'*********************************************************

Function FindUser (strUserList, strTargetUser)
Dim I \' 循环计数器
Dim blnFound \' 发现目标标记
FindUser = -1
I = 0 \' 化循环计数器
Do While I <= Ubound(strUserList) and Not blnFound
If strUserList(I) = strTargetUser Then
blnFound = True \' 标记设为 True
FindUser = I \' 返回值设为循环计数器


End If
I = I + 1 \' 循环计数器加 1
Loop
End Function
</font>
Tags:  vbscript教程 vbscript.encode vbscript.dll vbscript

延伸阅读

最新评论

发表评论