叮叮咚咚

技术文集

导航

asp开发规范

作者:佚名 文章来源:网海之贝

一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。

二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]


我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――

附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。

附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在



1、一些经常要用到的程序,除了写成函数处,一般要单独出来,以便共用。如错误(主要用于提交页面的非法参数)处理。可以写成一个AlertError函数(主要是输出一段JavaScript),考虑到函数的通用性,设定的参数有:JavaScrip弹出警告框的说明文字(如:名字不能为空等);页面location.href的变量(如果为空,则window.history.back())。

2、写ASP的时候,注意累积一些东西,这样对以后工作效率的提高会有不少的帮助。
如:数据的提交及处理是最常见的,一般的做法是每一个新的工程都要重新做。其实,只要在第一个工程里花多一点的时间,你就可以做一个标准的可以重复利用的数据提交处理程序。这个程序建议是在一个页面内完成的,不要把提交前台和后台分开,分开的想法是代码的可读性高,但是,只要把增加、修改、删除都封装成函数,代码的可读性一样很高,而且不必反复切换页面去寻找页面间传替的变量。程序先是读取所有的参数。其中active参数用于确定操作而调用函数add(), update(), delete(), show()(修改时用于显示旧数据)等。注意这个程序不要有太多的输入框,但同时最好又包括了各种输入框类型,还有不要用任何花巧的页面设计等,这样重复利用起来才是最简单的。

3、HTML代码尽量直接写在页面上,而不要用Response.Write输出大量的HTML代码。
因为Response.Write在DW等网页编辑器中是不可见的,这不利于美工的修改。

4、不要在页面上传递的数据库内的数据。
但是很多人却这么做了,导致的后果是很明显的,就是对方可以修改你的数据而导致数据的错误。正确的做法是只传递数据库内数据的关健字,然后在处理页面再一次从数据库中select出数据。不要因为这种做法比较麻烦而不去做。
当然,如果你传递的数据只是用于页面的输出的话不在讨论范围。

5、尽量减少session的使用,可以的话只用session记录用户名。
因为session太占资源了。我试过一个用户用了几十个session,结果初始化session的值就用了10多秒。

6.HTML代码中如果内联元素<%=>过多,建议在编写脚本时使用html调试,但最终交付使用时,最好把其连续成连接字符串用response.write一次调用!起效率反而要高的!
特别是对使用非常频繁的asp页面文件。

7.保证整个asp页面的输出能按标准的<html><head></head><body></body></html>基本来设计结构,我见很多在<html>标记之前执行javascript 然后才开始<head>信息,这对版本高的浏览器问题不大,但对版本低的浏览器已经一些非主流浏览器显示可能有问题,可能css不能准确调用等~~


8.在数据库连接,option explicit,全局同用变量定义,通用函数定义(如处理错误的涵数,判断非法输入检测的函数等..).......等之后就紧跟<html><head><title>...的头包含文件
可以封装在一个子函数中,减少单独包含#include文件的冗余!
同样的设定尾缀的包含版本信息和</body></html>的html文件!也可封装在一个函数中调用,不明确设定服务器也能自动给加上,减少服务器的动作总是好事,哪怕仅仅省了百万分之一秒!

9.模块化良好的流程设计,变动修改调整都会回变的很清爽轻松!
先设计好流程计划好功能模块,甚至先写出主框架的代码,最后再动手填写各个功能块调用的函数和#include文件,越详细的计划虽然开始繁琐,但在后期带来高效率!工作起来也感觉是一种享受~~!!否则被一团乱麻杂乱无章的代码弄的无休止的查找逻辑错误,苦不堪言,更别提别人能耐心看懂你的代码了!维护非常艰难~~
虽然增加了大量的函数调用表面上看来似乎性能下降,但其实带来非常好的便于维护的稳定的性能,稳定有时比速度还要重要,而且,可以把很多全局变量移置为局部变量带来更好的执行效率!
<!--#include file=myCONN.asp-->
<!--#include file=myChar.asp-->
call htmlstart()
act=request("action")
Select case act
case "delete"
call del()
case "addset"
call add()
.....
case else
call main()
end select

call htmlend

-------绝对比在整个页面中顶部是 IF 底部是end if
中间镶嵌无数~~判断语句清晰名了~

10.程序写完了运行通过,真正的苦日子才开始!
优化代码,仔细检查存在的程序bug,是更枯燥乏味的漫长的过程~~!!:(
我通常在页首设置star=time()
在页尾设置response.write time()-start
来检查页面的执行情况~~

a.反复研究asp代码,精简优化asp代码,减少一切可能的冗余代码,如如果使用VBSCRIPT则将@language=VBSCRIPT关闭,如果没有用session可以关闭~尽量用隐藏表单或querystring代替session在页面间传递变量..
b.优化ADO查询性能,反复检查查询代码,尽可能是干净利落的查询而不是庞杂无章的查询,recoredset.close connetion.close该用就用,不要后拖!当很多用户请求同一页面时!再重要不过了~~

11........无穷无尽的研究升级下一个新版本!!!!!
程序软件就是这样的:(




也就是大家开发时公用的部分,要事先定义好。
公用的变量,公用的函数。能想到的都写上去。

每个页面的输入的项目,和输出的项目。

还有每个页面的需要检测的项目。

还有可能的话,把基本的类实现。
比如上传下载用的,发妹儿用的....

一、需求分析
    如果是帮客户完成,则此处的需求应该是你与该客户共同协商,如他们需要该网站实现什么功能等等。如果是你自已先做网站,如自己做,那应该是你自己来思考应该有什么功能。当然考虑应该充分一些,如你有哪些人登录并使用这个站点,他们各自需要什么功能。
二、网站网格定位
    这要根据你客户需求性质而言,如某个医院的站点你不能做得太古惑,配色要适当。
三、网站核心技术的考虑
    要大体解决网站核心技术的难点,有必要时可写伪代码,不过大多时候没必要,编程主要是你把思路弄清楚。比如说,某一网站需要登录,然而他们对登录时密码及密码存储要求加密等等,你就要解决这个问题,或采用附加码等等(当然这个问题不怎么难)。
四、数据库设计
    数据库设计过程中,当然也要根据以上几点来定位了,你的技术中需要解决些什么,要用到哪些表、存储过程、查询等等。

asp开发规范

一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。

二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]


我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――

附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。

附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在对下拉框要有和隐藏按钮同步的,写出单独小函数,放在该按钮的下面。
对大型innerHTML型的客户端交互操作,将代码集中写在相应对应的写客户端脚本时,可多写些函数,使函数间传递的参数简单,功能单一,以便日后有类似页面,可以将其拆下来再使用。

对网页制作的要求:
网页人员完成的页面,为保证在使用时不会出现混乱,请他们作以下处理:
1.表格不要嵌套太多;
2.表格宽度要用象素规定宽度;
3.单页中,一个功能模块要做成一个表格,以便编写页面时,将重复部分提取成嵌入文件。
4.其它要注意的:精简代码、注意表格中字符和边框的宽度。
5.文件名请用英文小写加数字(和半角下划线)命名。[想想你的页面搬到unix主机上的惨状]
 
1、开发需要的人民币
2、开发需要的时间,包括首次测试时间和正式运行时间
3、开发需要的人力(程序员、美工、技术总监等)
4、开发文档(包括网站架构、内容、运行平台、语言等技术说明)

Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定,只有每个开发人员都按照一个共同的规范去设计、沟通、开发、测试、部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量。

一、项目的角色划分
    如果不包括前期和后期的市场推广及销售人员,开发团队一般可以划分为项目负责人、程序员、美工三个角色。
项目负责人习惯称为项目经理,负责项目的人事协调、时间进度等安排,以及处理一些与项目相关的其他事情。程序员主要负责项目的需求分析、策划、设计、代码编写、网站整合、测试、部署等环节的工作。美工负责网站的界面设计、版面规划,把握网站的整体风格。如果项目比较大,可以按照三种角色把人员进行分组。
角色划分是Web项目技术分散性甚至地理分散性等特点的客观要求,分工的结果还可以明确工作责任,最终保证了项目的质量。分工带来的负效应就是增加了团队沟通、协调的成本,给项目带来一定的风险。所以项目经理的协调能力显得十分重要,程序开发人员和美工在项目开发的初期和后期,都必须有充分的交流,共同完成项目的规划和测试、验收。

二、开发工具的选取
    不象C/S结构程序开发,可以一门语言从头到尾,你用Delphi,就是Delphi程序员,你用VC++,你就是VC程序员。B/S结构的Web开发工作,工具的选择是一件痛苦的事情。从Windows到Linux,从IIS到 Apache,从J2EE到 .NET,从EJB到COM到.NET组件……还有 Asp、Asp.net、Jsp、Php、Perl、Javascript、Vbscript……
美工也轻松不了多少,什么"网页三剑客" "新网页三剑客"、FrontPage、Photoshop、CorelDraw……谁都说自己是最强大的!
我们的经验是,选用工具时最好是统一的,但是也不必刻意强求一致。正是Web开发工具的多样性,才成就了今天互联网多姿多彩的局面。只要程序员的纯Html代码的功夫足够过硬,一般不会影响网站最后的整合工作。

三、项目开发流程
      由项目经理牵头,以程序员为重心,共同讨论,完成用户需求分析,产生网站的栏目规划(用树形图表示),标出哪些是静态页面,哪些是动态页面。动态页面须要程序实现。制定网站的界面框架,包括首页构图,及各页面间的钩稽关系。产生各栏目文件夹的结构图(一些公共文件夹如images、scripts、 styles等需要固定存放,共同调用)。
然后由美工根据内容表现的需要,设计静态网页和其它动态页面界面框架,该切分的图片要根据尺寸切割开来。给需要程序动态实现的页面预留页面空间。制定字体、字号、超级链接等CSS样式等。
在美工设计页面的同时,程序员着手开发后台程序代码,做一些必要的测试。
美工界面完成后,添加程序代码,组合网站,由项目组共同联调测试,发现bug,完善一些具体的细节。最后进行网站部署。
以上的每一部都会产生一些阶段性成果,项目经理需要及时进行审核、监督,发现问题即使纠正。
四、 一些技术规则
1,数据库命名约定
    表命名约定:表名长度不能超过30个字符,单词首写字母大写,多个单词间不用连接符号。
    字段命名约定:字段名尽量采用英文单词,单词首字母大写,单词之间用"_"隔开,命名规则是"表类别名_单词",如:User_Info,News_Content。
    视图命名约定:采用规则View_表A_表B_表C,其中View表示"视图"。这个视图由几个表产生就用连字符"_"连接几个表的名,如果表过多可以将表名适当简化。
    存储过程命名约定:P_表名_存取过程名(缩写),比如P_User_Deleted。
2,文件夹命名约定
公共文件夹:
/images 公共图片
/styles 样式表
/scripts 脚本
/ftps 下载
/doc 网站相关素材、文档
/readme.txt 网站说明文档
/helps.htm 网站帮助文档
/mylogs.txt 网站维护记录
其它栏目的命名,可以用拼音首字母简称,也可以用英文单词。全部文件夹的含义在readme.txt文件中说明。
3,对象及变量命名约定
每个变量名必须先定义,再使用。在ASP文件的最开头添加语句<%Option Explicit%>可以强制变量定义。代码块必须采用缩进格式。每个函数前必须标明函数的功能、输入参数、返回值的相关信息。

变量类型 缩写前缀
String str 或 s
Integer int
Date dt
Object obj或 o
Boolean bol或 b
Byte byt
Double dbl
Error err
Long lng
Single sng

五、 一些小经验
1,能用静态网页表现的内容,尽量不用程序代码动态实现。
2,设计阶段,必须和用户进行充分的交流,完全、准确的了解用户的需求。既不能歪曲用户的意思,也不能一味迎合用户的非正当需求,也不能对自己没有把握的技术甚至不可能实现的技术夸下海口。需求分析是一个沟通、交流、引导、教育、斗争、妥协的过程。需求分析结果要有文字资料存档。
3,技术参数必须了解准确。比如用户的软件平台是linux系列,那你的系统就只好用Java+Apache开发了,这时候你的ASP.NET技术就用不上了。
4,在必要的时候,让用户对已经确定的需求内容签字,盖章。

用Rational Rose设计就没什么问题了,所有需要的文档都能出

数据字典!



用DreamweaverMX,editPlus,notepad 都用了..
贴个:

             asp开发规范 

一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。

二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。
注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]


我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――

附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。

附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在对下拉框要有和隐藏按钮同步的,写出单独小函数,放在该按钮的下面。
对大型innerHTML型的客户端交互操作,将代码集中写在相应对应的写客户端脚本时,可多写些函数,使函数间传递的参数简单,功能单一,以便日后有类似页面,可以将其拆下来再使用。

对网页制作的要求:
网页人员完成的页面,为保证在使用时不会出现混乱,请他们作以下处理:
1.表格不要嵌套太多;
2.表格宽度要用象素规定宽度;
3.单页中,一个功能模块要做成一个表格,以便编写页面时,将重复部分提取成嵌入文件。
4.其它要注意的:精简代码、注意表格中字符和边框的宽度。
5.文件名请用英文小写加数字(和半角下划线)命名。[想想你的页面搬到unix主机上的惨状]

这一点, 以前没有注意过, 我都是这样的命名:
editNews.asp
delNews.asp

看样子要写成 
edit_news.asp
del_news.asp 好一点。


我也来补充几点代码规范:

1. 很多人都没有注意到的, 也是我特别要建议的: 运算符的两侧, 请多写一个空格。 试比较:
a=(b*c/d+3.243)&" sdfsdfsdflkj" &" asdsd" 

a = (b * c / d + 3.243) & " sdfsdfsdflkj"  & " asdsd" 
的可读性区别。 不言自明。

2. 代码请按照逻辑进行正确的缩进!
例子:
if a = 3 then
  response.write " test" 
else
  response.write " sdfsdf" 
end if
' -------------> 注意这里, 两个逻辑上的语句块之间请保留一个空行
do while not rs.eof
  response.write " test" 
  rs.MoveNext
loop

错误的例子:

if not rs.eof then
response.write " a" 
else
response.write " sfldfsd" 
end if
if a = 1 then
if b = 2 then
c = " sdfkgkgskldf" 
if d = " dfs"  then
e = " sdf" 
end if
f = " sdlkfsldfk" 
end if 
for i = 0 to 100
response.write i
next
end if

据我观察, 以上代码习惯的人在 asp 程序员里面至少占 80%, 我说的一点都不夸张。
你们看看吧, 上面这段代码, 能否看懂。 反正我是看到这种就头大。

不过从可读性的角度来说,空4个是不错的,空2格的效果就要差点了。

对了,微软不是还有个编码约定么?

什么是编码约定?
编码约定是帮助您使用 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

  原作者:小豪
  来 源:转载

asp开发规范 ——写这个东西请多多指教,以后开发时好少吃点苦头。

一、单页编写规范:
切记页面要分模块来写:
第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。
第二模块:定义全局变量。
第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp代码主要部分完成。
第四模块:纯html代码,利用储存在全局变量中的值来生成页面。
第五(注意):要在页面头部写清页面逻辑。(如何接收、处理。)
优点:便于维护。模块独立,便于重复使用到类似页面。

二、全站文件构建规范:
1.工程接手后,先观看静态页,掌握逻辑及浏览顺序。
2.抽取页面中被重复利用到的地方做成嵌入文件。
3.抽取头文件、尾文件,及左侧菜单栏,做成嵌入文件。
4.划分页面结构,做出模板文件。——以后制作中就copy它,然后就可直接制作。

注意:不要急于编写页面,除非你接手的是一项小工程,或者用户需求已经非常清楚确定并且不会再更改,否则,保持页面代码的可读性是非常重要的!(当你面对大返工时,你的心情如何?先对潜在的危险考虑一下吧!)
——因为我们每个人都对自己写的代码非常明白,而都比较难于读懂别人写的代码。并且,由于客户需求的变化,修改甚至推翻原有设计是比较常见的事。所以要注意在编写代码时注意让后来者快速读懂,并便于修改。][至少要在页面头部加上注释,在代码中间重要的部分,也有必要加一些说明性注释。]

我们所作的一切仅仅是为了:增加可移植可重用性、使逻辑清楚,便于维护、
适应用户需求的改变,并尽快完成,减少无用功。
――――――――――――――――――――――――――――――――――――――

附注一:第三模块编写说明。《ASP页面编写结构》
1.先写注释
2.写嵌入文件。
3.写大块的ASP代码(从COM中取出的)
——注意:复杂页面,尽量将不同COM的操作封装在独立的函数里;
——函数结尾有一句调用,后面页面中直接读取函数处理完的数据(已被赋给全局变量)
——调用函数前,对页面入口参数进行合法性检验。

附注二:第四模块编写说明。《Html代码部分需要注意的》
1)最好不使页面的asp代码和html代码混杂在一起,——感觉比较混乱。
2)通过获取全局变量的数据得到asp的处理结果。
3)关于客户端javascript:
表单提交前要进行合法性检验。写在<form标签的前面,函数起名示例:frmcheck1();
对下拉框要有和隐藏按钮同步的,写出单独小函数,放在该按钮的下面。
对大型innerHTML型的客户端交互操作,将代码集中写在相应对应的<div标签前。
写客户端脚本时,可多写些函数,使函数间传递的参数简单,功能单一,以便日后有类似页面,可以将其拆下来再使用。

对网页制作的要求:
网页人员完成的页面,为保证在使用时不会出现混乱,请他们作以下处理:
1.表格不要嵌套太多;
2.表格宽度要用象素规定宽度;
3.单页中,一个功能模块要做成一个表格,以便编写页面时,将重复部分提取成嵌入文件。
4.其它要注意的:精简代码、注意表格中字符和边框的宽度。
5.文件名请用英文小写加数字(和半角下划线)命名。[想想你的页面搬到unix主机上的惨状]

为了规范程序代码编写,提高代码可读性,降低后期维护成本,提高办公效率,建议以后编写的程序按以下几条规范进行:

一、 统一VBSCRIPT和ASP程序编写规范:

(一)变量命名规则:

由于在ASP和VBSCRIPT中因为不需要声明变量,同时不能声明变量的类型,但为了提高代码的可读性,养成好的开发习惯,对于本系统开发的变量命名统一规则如下:

1. 使用Dim、Public、Private声明变量;

例如:Dim iStudentNum

2. 变量类型的体现:

a、 整型变量:以小写字母i开头,后面跟变量标示符,英文单词的第一个字母大写。

例如:下面声明一个存储数据库记录多少的变量

Dim iResordsetNumber

b、 单精度实体变量:以小写字母f开头,后面跟变量标示符,英文单词的第一个字母大写。

c、 双精度实体变量:以小写字母d开头,后面跟变量标示符,英文单词的第一个字母要大写。

d、 字符型变量:以小写字母s开头;

e、 布尔型变量:以小写字母b开头;

f、 数组变量:数组类型+“_”+“Array”+“_”+“变量标示符”

例如:定义一个存储学生成绩的数组(存储单精度实体类型变量)

Dim f_Array_StudentMark

3. 变量标示符要符合标示符标准,同时容易理解,尽量使用英文单词来代替,尽量避免使用缩写或简写。

例如:存储校友通讯录的字符串变量定义为:

Dim sSchoolfellowAddressList;

虽然这样定义在输入的时候比较麻烦,但是,它大大提高了程序的可读性,见其变量命名就知其意。在做变量查找的时候也比较方便。 速度和性能总是不能两全,为了方便后者我们也就只有牺牲速度。

4.在变量定义后面加变量功能定义的注释。

(二)常量命名规则:

类型体现和上面一样,不一样的地方是,所有后面的标示符全部大写,例如:

定义一个存储语言种类的的字符型常量:

Const sLANGUAGE_TYPE=”Chinese”

(三)功能函数、过程命名规则:

1. 使用Function声明函数,用Sub声明过程;

2. 函数名或过程名的第一个字母大写,且后面的每个单词第一个字母大写。

例如:

Function CheckValidityOfInput(sStuentMark)

‘此处写代码

…………

End Function

3. 函数名或过程名要容易读,简单明了。

4. 在函数前面加注释,说明函数功能、参数说明、创建日期、修改日期、修改原因、创建人、修改人等相关信息。

(四)代码缩进标准:

为了提高代码的美观型和易读性,在此提出代码编写的版面格式:区间与区间之间以一个<Tab>为间距。

例如:

‘***********************************************************

‘功能:检测输入字符串中的单引号,如果有则把原来的一个单引号变成两

‘ 个单引号,两个变成四个,依次类推,从而避免SQL语句执行错误。

‘创建人:XXXX

‘创建时间:2002-7-6

‘修改时间:

‘修改原因:

‘修改人:

‘输入参数说明:sInputString:需要进行单引号检测的字符串

‘***********************************************************

Function CheckValidityOfInput(sInputString)

Dim iCirculationControl ‘控制循环

Dim sApartString ‘分离字符检测

Dim iLenOfInput ‘输入字符长度

iLen= Len(Trim(sInputString))

For iCirculationControl = 1 To iLen

If Mid(sInputString, iCirculationControl, 1) <>"'" Then

sApartString = sApartString & _

Mid(Trim(sInputString), iCirculationControl , 1)

Else

sApartString = sApartString & "''"

End If

Next

CheckValidityOfInput = sApartString

End Function

二、 统一JavaScript程序编写规范:

JavaScript的命名规则和上面大部分相同,唯一不同的地方是:变量使用Var来声明,在声明结束后以分号(;)结束。

函数的代码要求层次清楚,该写在下一行的地方尽量往下一行写,不要在一行中完成所有代码,这样看起来不容易,检查错误也特别费时。

在写函数的时候记着加注释内容,以便以后维护时快速了解程序功能。

下面是一个JavaScript程序:

<Script Language=”JavaScript”>

//***********************************************************************

//功能:对Form中的Text,Password,TextArea对象进行单引号处理,解决由于单引号

// 起的系统错误。

//创建人:XXXX

//创建时间:2002-7-8

//修改时间:

//修改原因:

//修改人:

//**********************************************************************

function CheckElement()

{

var sNeedCheck=""; //检测属于INPUT标签的内容

var iControlInput=0; //控制循环

var iLocationInput=0; //控制位置

var iLengthInput=0; //存储字符串长度

var sCheckingInput=""; //正在检测的字符

var sReplaceInput=""; //替换字符

var sHaveCheckInput=""; //已经检测的字符

var objInput; //存储INPUT对象;

var objTextArea; //存储TextArea对象

var iControlTextArea=0;

var iLocationTextArea=0;

var iLengthTextArea=0;

var sCheckingTextArea="";

var sReplaceTextArea="";

var sHaveCheckTextArea="";

//检测页面中的Text和Password对象中的单引号

for (i = 0; i < document.all.tags('INPUT').length; i++){

objInput = document.all.tags('INPUT');

if(objInput.type=='text'|| objInput.type=='password'){

sNeedCheckInput=obj.value;

iLengthInput=sNeedCheckInput.length;

for(iControl=0;iControl<iLength;iControl++){

sCheckingInput=sNeedCheckInput.charAt(iControl);

if(sCheckingInput==”’”)

sReplaceInput=”’’”;

else

sReplaceInput=sCheckingInput;

sHaveCheckInput=sHaveCheckInput+sReplaceInput;

}

}

objInput.value=sHaveCheckInput;

}

//检测页面中的TextArea对象中的单引号

for (i = 0; i < document.all.tags('TEXTAREA').length; i++){

objTextArea = document.all.tags('TEXTAREA');

if(objTextArea.type=='text'|| objTextArea.type=='password'){

sNeedCheckTextArea=obj.value;

iLengthTextArea=sNeedCheckTextArea.length;

for(iControl=0;iControl<iLength;iControl++){

sCheckingTextArea=sNeedCheckTextArea.charAt(iControl);

if(sCheckingTextArea==”’”)

sReplaceTextArea=”’’”;

else

sReplaceTextArea=sCheckingTextArea;

sHaveCheckTextArea=sHaveCheckTextArea+

sReplaceTextArea;

}

}

objTextArea.value=sHaveCheckTextArea;

}

}

</Script>

三、 系统性能提高,代码规范:

1.在ASP页面内,凡是使用CreageObject()创建的对象(Com、Recordset等),对于这些变量,应当在该页结束进行对象释放:即

Set 对象变量名=Nothing

2.数据库打开以后在不用的时候(通常是本页最后面),需要对连接进行关闭;

3.对于SQL语句,存储过程,尽量避免使用*来取所有字段,为了代码的易读性,SQL关键字要求全部大写,字段部分小写。

例如:

SELECT name,age,birthday,telephone,address FROM SchoolFellow.Address WHERE name=’xxxx’ ORDER BY birthday DESC

4.在ASP页中所有属性值尽量使用双引号括起来,特别是有属性Value的值,不要因为省时间而把双引号去掉(有的地方虽然可以去掉,程序不会出现错误,但,在有的地方去掉双引号会引来更多的麻烦。)

例如:

<INPUT type=”text” id=”ClassID” name=”ClassID” value=”<%=sClassID%>”>

在这个例子中,如果把Value属性值的单引号去掉,如果数据库中出来的值有空格,空格后面还有值,结果,显示的内容只有空格前面的内容,而后面的内容就会丢失。这只是其中一种情况,其他还有很多未知情况发生。

5. 配对标签问题:对于象<a></a>之类的标签,要注意检查配对的位值,有没有结束标志。

6. 对于需要输入字符串,且需要使用SQL语句的地方,需要进行单引号处理,调用/include/CheckQ.asp中的两个方法(一个是客户端处理,一个是服务器端处理,根据需要进行调用,安全性要求高的地方多数情况下采用服务器端处理。)之一。

7. 为了提高安全性,能使用ASP编写的代码,尽量采用ASP编写,在服务器端运行,不让用户看到代码。

8. 对于安全性要求特别高的地方,建议采用三层结构:使用VB或Delphi编写商业逻辑层代码(COM),尽量把数据库的连接部分封装到组件中,提高安全性能,通过组件和数据库交流。

9. 对于网站的安全性,应该采用好的断口扫描软件,查看网站已经打开的断口,把不安全的断口给关闭。

四、 养成写开发文档的习惯:

对于每一个页面设计(前接页,后接页),包括功能说明,页面设计,页面名称,存放位置等,应当有相应的文档记载。对于发生改动的地方,需要保留原来的部分(注释或备份),并说明备份文件存放的地方,改动时间,修改人。

对于程序部分,应该有相应的设计流程,改动的时候,也需要设计改动流程图,以便以后进行对比,和查找问题所在位置,以及问题的严重性分析


posted on 2005-06-30 14:47  叮叮咚咚  阅读(607)  评论(0)    收藏  举报