查看: 1024|回复: 3

[ASP入门] ASP开发代码样式规范约定说明总结。

[复制链接]
xuanxiao 发表于 2022-5-12 00:08:33 | 显示全部楼层 |阅读模式
以下约定适用于包含用 VBScript 或 JScript 编写的脚本的 ASP 页面的开发,旨在增强一致性、可读性和易于维护。
代码注释位置
插入带有相应代码的每个注释。

内联注释应该出现在相应代码之后的两个空格。

以新行开头的注释应以空行开头。
参考如下:
  1. <%
  2. Dim intVariable '变量声明
  3. '分配给变量一个整形值.
  4. intVariable = 5
  5. %>
复制代码



VBScript 中的块级注释



  1. Sub ShowIt()
  2. '======================================
  3. '下面的过程他会
  4. '根据用户不同的语言选择

  5. '展现不同的样式
  6. '======================================
  7. Dim vntCurrLang
  8. vntCurrLang = document.all.langselect.value
  9. Select Case vntCurrLang
  10. Case "C"
  11. document.all.cdiv.style.display = ""
  12. Case "VB"
  13. document.all.vbdiv.style.display = ""
  14. Case "J"
  15. document.all.javadiv.style.display = ""
  16. End Select
  17. End Sub
复制代码


JScript 中的注释块

JScript 中的多行注释以 /* 开头,以 */ 结尾。大型多语句注释块的格式应如下例所示。
  1. function showIt()
  2. /*******************************************
  3. ** 这是一个大的注释块
  4. ** 下面的过程他会根据用户不同的语言选择
  5. ** 展现不同的DIV
  6. *******************************************/
  7. {
  8. var vntCurrLang = document.all
  9. ...
  10. }
复制代码


常量名称
命名常量时使用全部大写以将它们与其他元素区分开来。必要时可以使用下划线分隔术语。
  1. Const MIN_AMOUNT = 25
复制代码


上下文切换
为了可读性,尽量减少 HTML 和脚本之间的切换。如果可能,在页面上使用几个大的脚本块而不是几个分散的片段。

分隔脚本行
脚本行应该放在一对分隔符之间,它们被放置在单独的行上,而不是在每行上都写有分隔符。
错误写法:
  1. <%
  2. strEmail = Session("Email") %>
  3. <% strFirstName = Request.Form ("FirstName") %>
  4. <% strLastName = Request.Form ("LastName") %>
复制代码

正确写法:
  1. <%
  2. strEmail = Session("Email")
  3. strFirstName = Request.Form ("FirstName")
  4. strLastName = Request.Form ("LastName")
  5. %>
复制代码


对于单个独立的脚本行,将分隔符与脚本保持在同一行。
  1. <% strEmail = Session("Email") %>
复制代码


如果脚本行是 ASP 输出指令(由等号和变量组成),请不要在等号和定界符之间使用空格。
  1. <%= strSubscrLName %>
复制代码




 楼主| xuanxiao 发表于 2022-5-12 23:05:54 | 显示全部楼层
缩进

缩进让代码的逻辑结构更加清晰。

再一次,将包含多行的脚本放在脚本分隔符下方的一行上,将其阻塞并缩进两个空格。将单行脚本与分隔符放在同一行。

ASP 定界符 (<% & %>) 之间的所有内容缩进至少两个空格,过程(函数和子例程)除外。

还缩进两个空格:

每次逻辑中断

嵌套语句和 HTML 元素

函数体

来自其控制代码的循环体

以下示例说明了用 VBScript 或 JScript 编写的脚本的一些缩进规则。
单行脚本:
  1. <% Dim strLastName %>
复制代码


带有嵌套逻辑的脚本
<%
'这个例子演示了一个带有
'嵌套的逻辑块。
Dim vntOutput
Set vntExample = Server.CreateObject("MyComponents.Component.1")
vntOutput = varExample.Text
If vntOutput = "" Then
Response.Write "错误!"
Else
Response.Write vntOutput
End If
%>

VBScript 中的函数


  1. <%
  2. Function CalcMortgageRate()
  3. Statement_1
  4. End Function
  5. %>
复制代码


JScript 中的函数

  1. <%
  2. //这是一个函数范例
  3. function calcMortgageRate()
  4. {
  5. statement1
  6. statement2
  7. }
  8. %>
复制代码


脚本的布局顺序
以下列表总结了 .asp 文件中推荐的脚本布局,从上到下在页面上进行。井井有条的脚本会产生更易读的页面,并且在某些情况下会产生更清晰的执行。除非另有说明,否则该列表适用于 VBScript 和 JScript。

1.指定语言。

2.使用Option Explicit语句(仅限 VBScript)。

3.列表函数库包括。

4.声明页面范围的变量。

5.为页面范围的变量赋值。

6.编写 HTML 和内联脚本。

7.列出内联脚本调用的函数。

布局顺序

  1. <%@ LANGUAGE=VBScript %>
  2. <% Option Explicit %>
  3. <HTML>
  4. <HEAD>
  5. <TITLE>变量定义</TITLE>
  6. </HEAD>
  7. <BODY BGCOLOR="White" topmargin="10" leftmargin="10">
  8. <!-- 头部显示 -->
  9. <FONT SIZE="4" FACE="Arial, Helvetica"> <B>变量定义示范</B></FONT>
  10. <BR>
  11. <HR>
  12. <H3>整数操作</H3>
  13. <%
  14. '声明变量
  15. Dim intVariable
  16. '分配变量值
  17. intVariable = 5
  18. %>
复制代码


对于 VBScript,使用Option Explicit强制显式变量声明。这可以防止在脚本执行时拼写错误的变量导致意外结果。

要声明事务页面,请将<%@ TRANSACTION=value %>指令添加到页面的第一行。

事务页面
  1. <%@ TRANSACTION=Required LANGUAGE=VBScript %>
  2. <% Option Explicit %>
  3. <HTML>
  4. <HEAD>
  5. .
  6. .
  7. .
复制代码


 楼主| xuanxiao 发表于 2022-7-21 12:33:59 | 显示全部楼层
对象和过程调用名称

要将对象名称和过程调用与变量等元素区分开来,请以动词开头每个对象名称或过程调用。对对象名称或过程调用中的每个术语使用首字母大写。表 A.1 提出了一些命名约定,可用于为某些典型活动命名对象。
名称
功能
范例
AddNew
新增记录
Customer.AddNew
Update
更新记录
Customer.Update
Remove
删除记录
Customer.Remove
Get
返回单行记录
Customer.GetNewest
List
返回多行记录
Customer.ListNew

要指定返回信息的方法的返回值,请将From和For与方法或函数名称一起使用。
名称
功能
范例
GetFor
返回基于条件的行
Customer.GetForName
ListFor
返回基于条件的多行
Customer.ListForPeriod

对象命名
命名对象(包括内置对象)时,请使用每个术语的首字母大写。为对象使用描述性名称,即使每个名称需要更多字符。
以下示例符合此命名约定(“cnn”是 ADO 连接变量的前缀):
  1. Set cnnSQL = Server.CreateObject("ADODB.Connection")
  2. Set cnnSQLServer = Server.CreateObject("ADODB.Connection")
复制代码

这些名称不符合:
  1. Set cnnS = Server.CreateObject("ADODB.Connection")
  2. Set cnnsql = Server.CreateObject("ADODB.Connection")
复制代码


路径,使用 MapPath
考虑在 ASP 应用程序中使用MapPath方法而不是文字路径。ASP Server.MapPath方法允许您在物理上重新定位 ASP 应用程序,而无需重新编码脚本。这节省了程序修改和维护工作。

性能受到轻微影响,因为每次在脚本中使用MapPath,IIS 都必须检索当前服务器路径。考虑将方法调用的结果放在应用程序变量中,以避免检索服务器路径。


Select Case 语句

为了可读性和效率,请使用Select Case语句代替If&Else,以避免重复检查相同变量的不同值。例如:

<%
Select Case intYrsService
Case 0 to 5
strMessage = "你今年有十天假期"
Case 6 to 15
strMessage = "你今年有十五天假期"
Case 16 to 30
strMessage = "你今年有二十天假期"
Case 31 to 100
strMessage = "你没有假期"
End Select
%>

在脚本中正确使用空格
为了提高脚本的可读性,请在运算符前后使用空格,例如加号 (+)、减号 (-) 和等于 (=)。

例子:
  1. intYearsService = intYearCurrent - intYearFirst
复制代码

逗号后也要使用空格,例如在传递参数或声明多个变量时。

例子:
  1. Dim intYearsService, intYearCurrent, intYearFirst
复制代码


注意:在 ADO 连接字符串中的参数之间使用空格是无效的,并且会导致错误。
 楼主| xuanxiao 发表于 2022-7-21 12:50:27 | 显示全部楼层
语句样式规范
每种脚本语言都有自己的大小写、缩进和其他与样式相关的特征的约定。由于 VBScript 不区分大小写,因此可以设计大写约定来提高可读性,如下面的建议所示。

If&Then&Else&End If语句:

If、Then、Else和EndIf的第一个字母大写。

将If、Then或Else后面的语句缩进两个空格。
在等号 (=) 的每一端放置空格。
避免使用不必要的括号。
正确的例子:
  1. <%
  2. If Request("FName") = "" Then
  3. Response.Clear
  4. Response.Redirect "test.html"
  5. Else
  6. Response.Write Request("FName")
  7. End If
  8. %>
复制代码

同样,Function 和Sub 语句的第一个字母大写,并将它们的定义缩进两个空格。
例子:
  1. Sub SessionOnStart
  2. Session("MyId") = Request.ServerVariables(&)
  3. End Sub
复制代码
避免使用下划线。
例子:
  1. Dim FirstName, LastName
复制代码

字符串连接语句
为保持一致性并实现预期的解释,请在 VBScript 字符串中使用字符串连接符 (&) 而不是加号 (+)。

不要像这样:
  1. WholeName = FirstName + " " + LastName
复制代码


应该这样写:
  1. WholeName = FirstName & " " & LastName
复制代码



字符串函数
使用String(number,character)函数创建由重复字符组成的字符串。例如,要创建一个由 12 个星号组成的字符串:

  1. Dim strAstString
  2. strAstString = String(12,"*")
复制代码


String()函数将字符代码和字符串表达式作为参数,但没有For &循环那么冗长。

Case 变量值
使用UCase()或LCase()在变量赋值和逻辑测试中保持案例一致。这在分配和逻辑测试时尤其重要。


变量声明
显式声明变量有助于暴露错误,例如拼写错误的变量名。要使代码更可靠和可读,请使用 VBScript 中的Option Explicit语句。
当您想使用强变量类型时,应将逻辑编程到使用支持它的语言构建的组件中,例如 Visual Basic 6.0 等中。在VBScript中如果不定义类型直接使用,会影响性能,尤其是在涉及数学计算时。

  1. 变量名的定义
复制代码

要让阅读您的脚本的其他人清楚地了解变量的预期用途,请使用小写的三个字符前缀来指示数据类型。即使 VBScript 或 JScript 都不支持显式数据类型,建议使用此类前缀。

为了命名变量的一致性,请在变量名称中使用首字母大写。不要大写前缀。例如,要将名为“SwitchOn”的变量的数据类型表示为布尔值,请使用表 A.2 中的前缀“bln”来命名变量“blnSwitchOn”。

表 A.2 变量数据类型的建议前缀
数据类型
前缀
ADO command
cmd
ADO connection
cnn
ADO field
fld
ADO parameter
prm
ADO recordset
rst
Boolean
bln
Byte
byt
Collection object集合
col
Currency 货币类型
cur
Date-time 时间类型
dtm
Double 双精度
dbl
Error
err
Integer 整形
int
Long 长整形
lng
Object 对象
obj
Single 单精度
sng
String 字符串
str
User-defined type
udt
Variant
vnt

为保持变量名称长度合理,请使用标准化缩写。为清楚起见,请在整个应用程序或一组相关应用程序中保持缩写一致。
不建议示范:
  1. strSocialSecurityNumber
复制代码
建议示范:
  1. StrSSN
复制代码


变量值修剪Trim
修剪值时保持一致。在将它们置于状态之前将数值修剪到所需的长度。这将消除由修整方案不一致引起的处理错误。例如,像 9.997 这样重复用作乘数的值将累积与修剪后的值 9.9 不同的结果。使用 LTrim、RTrim 或 Trim 修剪字符串中不需要的前导和尾随空格,以消除空格导致处理错误或显示未对齐的可能性。

脚本性能
对象和变量初始化
以下信息将帮助您初始化和设置对象和变量的维度,以实现更快的执行和有效地使用服务器资源。除非另有说明,否则假定为 VBScript。

范围变量
使用页面范围以获得最佳性能

局部变量驻留在函数和子例程中。将页面范围(也称为本地范围)赋予变量,除非您有令人信服的理由使用更广泛的范围。例如,您可能希望将会话范围分配给用户会话中多个脚本中使用的变量。局部变量被编译成表条目。在运行时,通过快速执行的表查找来解析对局部变量的引用,从而使局部变量比全局变量具有更快的性能。

谨慎有效地使用全局变量

全局变量在运行时解析,执行速度比局部变量慢得多。未声明的全局变量最慢,第一次使用时需要搜索整个变量列表。当您需要为变量赋予全局范围时,请在使用它们之前使用Dim语句声明它们。通过消除对整个变量列表的搜索,这节省了首次使用的宝贵时间。

避免使用公共变量

不要使用定义为Public的变量。正在审查Public关键字以确定未来的使用。请改用Dim。

使用对象的应用程序范围
存储在具有应用程序范围的变量中的信息位于内存中,并被缓存以供应用程序中的任何页面访问。如果值不经常更改,则将应用程序范围赋予应用程序中经常使用的变量。

无论有什么潜在的好处,在决定是否将应用程序范围赋予对象时都要谨慎。它可能会影响性能并降低可靠性(您的应用程序可能会停止响应)。要使用具有应用程序范围的对象获得最佳性能,请将线程设置为 BOTH。

避免使用服务器变量
如果您的应用程序不需要它们,最好避免使用服务器变量。每当您的 ASP 应用程序访问服务器变量时,您的网站都会发出一个请求,该请求检索服务器的整个变量集合——而不仅仅是要使用的变量。这会在第一次使用服务器变量时导致性能下降。您可以通过将ENABLESESSIONSTATE指令设置为 FALSE来强制执行此限制。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表

在线客服

售前咨询
售后咨询
服务热线
023-58418553
微信公众号