深圳升蓝软件
数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类   
Hiblue Software

VBScript 编码约定


March 25,2004
<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">int</font></td>
      <td><font SIZE="2">intQuantity</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">其状态影响此过程的外部变量、控件或其他元素的列表。</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>
    <tr VALIGN="TOP">
      <td WIDTH="15%"><font SIZE="2">返回</font></td>
      <td><font SIZE="2">返回值的解释。</font></td>
    </tr>
  </table>
  <p>请记住以下几点: <ul>
    <li>每个重要的变量声明都应有内部注释,描述变量的用途。 </li>
    <li>应清楚地命名变量、控件和过程,仅在说明复杂细节时需要内部注释。
    </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 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
</font>
       
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved