ASP开发规范<br /> 一、 统一VBSCRIPT和ASP程序编写规范: <br /> (一)变量命名规则:<br /> 由于在ASP和VBSCRIPT中因为不需要声明变量,同时不能声明变量的类型,但为了提高代码的可读性,养成好的开发习惯,对于本系统开发的变量命名统一规则如下:<br /> 1. 使用Dim、Public、Private声明变量; <br /> 例如:Dim iStudentNum <br /> 2. 变量类型的体现: <br /> a、 整型变量:以小写字母i开头,后面跟变量标示符,英文单词的第一个字母大写。 <br /> 例如:下面声明一个存储数据库记录多少的变量 <br /> Dim iResordsetNumber <br /> b、 单精度实体变量:以小写字母f开头,后面跟变量标示符,英文单词的第一个字母大写。 <br /> c、 双精度实体变量:以小写字母d开头,后面跟变量标示符,英文单词的第一个字母要大写。 <br /> d、 字符型变量:以小写字母s开头; <br /> e、 布尔型变量:以小写字母b开头; <br /> f、 数组变量:数组类型+“_”+“Array”+“_”+“变量标示符” <br /> 例如:定义一个存储学生成绩的数组(存储单精度实体类型变量) <br /> Dim f_Array_StudentMark <br /> 3. 变量标示符要符合标示符标准,同时容易理解,尽量使用英文单词来代替,尽量避免使用缩写或简写。 <br /> 例如:存储校友通讯录的字符串变量定义为: <br /> Dim sSchoolfellowAddressList; <br /> 虽然这样定义在输入的时候比较麻烦,但是,它大大提高了程序的可读性,见其变量命名就知其意。在做变量查找的时候也比较方便。 速度和性能总是不能两全,为了方便后者我们也就只有牺牲速度。 <br /> 4.在变量定义后面加变量功能定义的注释。 <br /> (二)常量命名规则: <br /> 类型体现和上面一样,不一样的地方是,所有后面的标示符全部大写,例如: <br /> 定义一个存储语言种类的的字符型常量: <br /> Const sLANGUAGE_TYPE=”Chinese” <br /> (三)功能函数、过程命名规则: <br /> 1. 使用Function声明函数,用Sub声明过程; <br /> 2. 函数名或过程名的第一个字母大写,且后面的每个单词第一个字母大写。 <br /> 例如: <br /> Function CheckValidityOfInput(sStuentMark) <br /> ‘此处写代码 <br /> ………… <br /> End Function <br /> 3. 函数名或过程名要容易读,简单明了。 <br /> 4. 在函数前面加注释,说明函数功能、参数说明、创建日期、修改日期、修改原因、创建人、修改人等相关信息。 <br /> (四)代码缩进标准: <br /> 为了提高代码的美观型和易读性,在此提出代码编写的版面格式:区间与区间之间以一个&lt;Tab&gt;为间距。 <br /> 例如: <br /> ‘*********************************************************** <br /> ‘功能:检测输入字符串中的单引号,如果有则把原来的一个单引号变成两 <br /> ‘ 个单引号,两个变成四个,依次类推,从而避免SQL语句执行错误。 <br /> ‘创建人:XXXX <br /> ‘创建时间:2002-7-6 <br /> ‘修改时间: <br /> ‘修改原因: <br /> ‘修改人: <br /> ‘输入参数说明:sInputString:需要进行单引号检测的字符串 <br /> ‘*********************************************************** <br /> Function CheckValidityOfInput(sInputString) <br /> Dim iCirculationControl ‘控制循环 <br /> Dim sApartString ‘分离字符检测 <br /> Dim iLenOfInput ‘输入字符长度 <br /> iLen= Len(Trim(sInputString)) <br /> For iCirculationControl = 1 To iLen <br /> If Mid(sInputString, iCirculationControl, 1) &lt;&gt;&amp;quot;'&amp;quot; Then <br /> sApartString = sApartString &amp;amp; _ <br /> Mid(Trim(sInputString), iCirculationControl , 1) <br /> Else <br /> sApartString = sApartString &amp;amp; &amp;quot;''&amp;quot; <br /> End If <br /> Next <br /> CheckValidityOfInput = sApartString <br /> End Function <br /> 二、 统一JavaScript程序编写规范: <br /> JavaScript的命名规则和上面大部分相同,唯一不同的地方是:变量使用Var来声明,在声明结束后以分号(;)结束。 <br /> 函数的代码要求层次清楚,该写在下一行的地方尽量往下一行写,不要在一行中完成所有代码,这样看起来不容易,检查错误也特别费时。 <br /> 在写函数的时候记着加注释内容,以便以后维护时快速了解程序功能。 <br /> 下面是一个JavaScript程序: <br /> &lt;Script Language=”JavaScript”&gt; <br /> //*********************************************************************** <br /> //功能:对Form中的Text,Password,TextArea对象进行单引号处理,解决由于单引号 <br /> // 起的系统错误。 <br /> //创建人:XXXX <br /> //创建时间:2002-7-8 <br /> //修改时间: <br /> //修改原因: <br /> //修改人: <br /> //********************************************************************** <br /> function CheckElement() <br /> { <br /> var sNeedCheck=&amp;quot;&amp;quot;; //检测属于INPUT标签的内容 <br /> var iControlInput=0; //控制循环 <br /> var iLocationInput=0; //控制位置 <br /> var iLengthInput=0; //存储字符串长度 <br /> var sCheckingInput=&amp;quot;&amp;quot;; //正在检测的字符 <br /> var sReplaceInput=&amp;quot;&amp;quot;; //替换字符 <br /> var sHaveCheckInput=&amp;quot;&amp;quot;; //已经检测的字符 <br /> var objInput; //存储INPUT对象; <br /> var objTextArea; //存储TextArea对象 <br /> var iControlTextArea=0; <br /> var iLocationTextArea=0; <br /> var iLengthTextArea=0; <br /> var sCheckingTextArea=&amp;quot;&amp;quot;; <br /> var sReplaceTextArea=&amp;quot;&amp;quot;; <br /> var sHaveCheckTextArea=&amp;quot;&amp;quot;; <br /> //检测页面中的Text和Password对象中的单引号 <br /> for (i = 0; i &lt; document.all.tags('INPUT').length; i++){ <br /> objInput = document.all.tags('INPUT'); <br /> if(objInput.type=='text'|| objInput.type=='password'){ <br /> sNeedCheckInput=obj.value; <br /> iLengthInput=sNeedCheckInput.length; <br /> for(iControl=0;iControl&lt;iLength;iControl++){ <br /> sCheckingInput=sNeedCheckInput.charAt(iControl); <br /> if(sCheckingInput==”’”) <br /> sReplaceInput=”’’”; <br /> else <br /> sReplaceInput=sCheckingInput; <br /> sHaveCheckInput=sHaveCheckInput+sReplaceInput; <br /> } <br /> } <br /> objInput.value=sHaveCheckInput; <br /> } <br /> //检测页面中的TextArea对象中的单引号 <br /> for (i = 0; i &lt; document.all.tags('TEXTAREA').length; i++){ <br /> objTextArea = document.all.tags('TEXTAREA'); <br /> if(objTextArea.type=='text'|| objTextArea.type=='password'){ <br /> sNeedCheckTextArea=obj.value; <br /> iLengthTextArea=sNeedCheckTextArea.length; <br /> for(iControl=0;iControl&lt;iLength;iControl++){ <br /> sCheckingTextArea=sNeedCheckTextArea.charAt(iControl); <br /> if(sCheckingTextArea==”’”) <br /> sReplaceTextArea=”’’”; <br /> else <br /> sReplaceTextArea=sCheckingTextArea; <br /> sHaveCheckTextArea=sHaveCheckTextArea+ <br /> sReplaceTextArea; <br /> } <br /> } <br /> objTextArea.value=sHaveCheckTextArea; <br /> } <br /> } <br /> &lt;/Script&gt; <br /> 三、 系统性能提高,代码规范: <br /> 1.在ASP页面内,凡是使用CreageObject()创建的对象(Com、Recordset等),对于这些变量,应当在该页结束进行对象释放:即 <br /> Set 对象变量名=Nothing <br /> 2.数据库打开以后在不用的时候(通常是本页最后面),需要对连接进行关闭; <br /> 3.对于SQL语句,存储过程,尽量避免使用*来取所有字段,为了代码的易读性,SQL关键字要求全部大写,字段部分小写。 <br /> 例如: <br /> SELECT name,age,birthday,telephone,address FROM SchoolFellow.Address WHERE name=’xxxx’ ORDER BY birthday DESC <br /> 4.在ASP页中所有属性值尽量使用双引号括起来,特别是有属性Value的值,不要因为省时间而把双引号去掉(有的地方虽然可以去掉,程序不会出现错误,但,在有的地方去掉双引号会引来更多的麻烦。) <br /> 例如: <br /> &lt;INPUT type=”text” id=”ClassID” name=”ClassID” value=”&lt;%=sClassID%&gt;”&gt; <br /> 在这个例子中,如果把Value属性值的单引号去掉,如果数据库中出来的值有空格,空格后面还有值,结果,显示的内容只有空格前面的内容,而后面的内容就会丢失。这只是其中一种情况,其他还有很多未知情况发生。 <br /> 5. 配对标签问题:对于象&lt;a&gt;&lt;/a&gt;之类的标签,要注意检查配对的位值,有没有结束标志。 <br /> 6. 对于需要输入字符串,且需要使用SQL语句的地方,需要进行单引号处理,调用/include/CheckQ.asp中的两个方法(一个是客户端处理,一个是服务器端处理,根据需要进行调用,安全性要求高的地方多数情况下采用服务器端处理。)之一。 <br /> 7. 为了提高安全性,能使用ASP编写的代码,尽量采用ASP编写,在服务器端运行,不让用户看到代码。 <br /> 8. 对于安全性要求特别高的地方,建议采用三层结构:使用VB或Delphi编写商业逻辑层代码(COM),尽量把数据库的连接部分封装到组件中,提高安全性能,通过组件和数据库交流。 <br /> 9. 对于网站的安全性,应该采用好的断口扫描软件,查看网站已经打开的断口,把不安全的断口给关闭。 <br /> 四、 养成写开发文档的习惯: <br /> 对于每一个页面设计(前接页,后接页),包括功能说明,页面设计,页面名称,存放位置等,应当有相应的文档记载。对于发生改动的地方,需要保留原来的部分(注释或备份),并说明备份文件存放的地方,改动时间,修改人。 <br /> 对于程序部分,应该有相应的设计流程,改动的时候,也需要设计改动流程图,以便以后进行对比,和查找问题所在位置,以及问题的严重性分析。 <br /> <br />
T:0.006490s,M:256 KB
返回顶部 留言