回 帖 发 新 帖 刷新版面

主题:我写的系统开发规范,给大家参考

系统开发规范
1、目的
规范编码,规范设计风格;保证系统功能的完整性、稳定性、安全性、兼容性、可扩展性;
提高工作效率,提高程序员的编码和设计水平;保证系统的质量,保证系统有效的运行。
2、编码和程序设计规范
2.1、命名规范:
2.1.1、 通用规范
所有名称必须全部使用与内容相关的英文单词命名(尽量避免使用汉语拼音),绝对不能使
用汉字,对于一个单词难以表达的,可以考虑用多个单词命名。所有英文单词命名都必须为
小写,所有组合英文单词命名用"_"进行连接。
在测试、修改备份命名时遵循:在原命名后面添加当前日期作为备份项目的命名的原则。
所有的名称起始和结尾不能使用下划线"_"。
所有的名称不能包含26个英文小写字母和1-9数字字符和下划线"_"以外的其他字符。
2.1.2、文件夹的命名
原则:以最少的字母达到最容易理解的意义。
文件夹的名称应尽量能够表达其意义,尽量使用英文命名,绝对不能使用汉字。文件夹名称尽量
用单个英文单词表达内容。注意遵循通用规范。
文件夹名称不能超过10个字符。
如果要用到两个单词表达意义,取每个单词前四个字符加"_"进行连接,例如:huma_reso(人力资源)
系统根目录下固定文件夹名的为:
    \css          存放样式表文件
    \include      存放嵌入文件(asp格式)
    \library    存放嵌入文件(html格式)
    \images        存放图片文件
    \common        存放公用功能页面文件
    \script        存放公用JS文件
    \help        存放帮助文件
    \template    存放模板文件
    \hope        存放各功能模块的程序文件
    \back_admin    存放各功能模块的后台管理程序文件
    \pub        存放公用访问信息文件(含新闻、资讯)

2.1.3、文件的命名
原则:以最少的字母达到最容易理解的意义。
文件的名称应尽量能够表达文件本身的作用。扩展名要能代表文件本身的类型,例如:嵌入页面的
javascript程序片段用*.js等等。所有文件名用小写英文单词表示,如果必须用到组合英文单词来
清楚表达文件的作用,最后一个单词用动词,两个或两个以上单词用"_"进行连接,如果组合名称超过
20个字符,取每个单词前四个字母加最后一个动词单词。例如:object_table_add.asp。
动作单词命名规则:
    _add        增加资料动作
    _edt        修改资料动作
    _del        删除资料动作
    _shw        显示资料动作
    _all        多个动作放在一个文件时
    _sch        搜索资料动作
    _cls        分类列表显示
    _lst        分页列表显示
        2.1.4、描述性变量名和过程、函数名
变量名使用前必须定义。
变量名或过程、函数名的主体应使用大小写混合格式,并且尽量完整地描述其目的。另外,过程、函
数名应以动词开始,然后根据以上作用域约定加入不同的前缀:"sf_"或"pf_"。
例如:pf_InitNameArray 或 sf_CloseDialog。
对于经常使用的或较长的名称,推荐使用标准缩写以使名称保持在适当的长度内。通常多于 32 个字
符的变量名会变得难以阅读。使用缩写时,应确保在整个 Script 中保持一致。
    2.2、文件目录规范
目录建立的原则:以最少的层次提供最清晰简便的访问结构。
2.2.1、根目录。根目录指DNS域名服务器指向的索引文件的存放目录。根目录只允许存放index.asp和
    main.asp文件,以及其他必须的系统文件。
2.2.2、每个语言版本存放于独立的目录。
2.2.3、每个主要功能(主菜单)建立一个相应的独立目录。
2.2.4、当页面超过20页,每个目录下存放各自独立images目录.共用的图片放在根目录下的images目录下。
2.2.5、所有的CSS文件存放在根目录下统一目录css中。
2.2.6、所有公用函数文件作适当归类和调整后放在根目录下统一目录include中。
2.2.7、所有页面模板文件放在根目录下统一目录template中。
    2.3、HTML页面规范
2.3.1、整个页面要采取统一风格设计,尽量采用同一色系的颜色,同一页面尽可能不出现过多色彩以免过于凌乱。
2.3.2、Head区规范
head区是指首页HTML代码的< head>和< /head>之间的内容。
必须加入的标签:
  a.公司版权注释    < !--- The site is designed by xxxx.COM 12/2002 --->
  b.网页显示字符集
    简体中文:< META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
    繁体中文:< META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=BIG5">
    英 语:< META HTTP-EQUIV="Content-Type" CONTENT="text/html; harset=iso-8859-1">
   c.网站简介 < META NAME="DESCRIPTION" CONTENT="xxxxxxxxxxxxxxxxxxxxxxxxxx">
   d.搜索关键字 < META NAME="keywords" CONTENT="xxxx,xxxx,xxx,xxxxx,xxxx,">
   e.网页的css规范 < LINK href="style/style.css" rel="stylesheet" type="text/css">
   f.网页标题 < title>xxxxxxxxxxxxxxxxxx< /title>

2.3.3、源代码与页面嵌套规范
a.网页设计人员设计的HTML页面以<table></table>嵌套的方式确定用于动态显示程序执行结果的
位置、宽度、行数(或高度)等,并在相应位置予以文字说明。(3) 使用include技术将分割开
的HTML页面分别嵌入程序代码中,要求做到修改HTML页面时无须改写程序,而修改程序时不会影响
HTML页面效果,将页面改版和修改程序两项工作分别独立。
b.页面和程序嵌套以后不能破坏原HTML页面的整体显示效果,字体、字号、颜色等应尽量保持原HTML页面的风格。
c.动态生成的页面的各项指标(如图片大小、页面宽度、高度、页面文件的字节数等)应符合网页设计方面的要求。
d.包含或嵌套根目录下固定文件夹里的文件必须用绝对路径,包含或嵌套其它文件夹里的文件用相对路径;
    例:
绝对路径:<!--#include virtual="/include/checksession.asp" -->
    相对路径:<!--#include file="../include/managestr.asp" -->
2.3.4、链接规范
所有页面中图片、文字等等本项目的链接必须使用相对路径,除非是链接到其它网站的链接才采用绝对路径。
2.3.5、公用图片规范
对于新增、删除、修改、浏览、首页、前页、后页、末页等等整个项目采用的定义某种动作的图片,采用
CSS样式表等方式定义统一调用,对于表示某个模块功能的静态链接图片尽量采用include方式定义统一调用。
2.3.6、其它原则   
a.尽量用相对百分比而不是用绝对象素来进行定位。
b.尽量用<table> </table>来定位,尽量少用空格。
2.4、功能完整:
    开发好的模块应满足和达到需求所要求的功能,合理的分解这些功能到相应的函数、存储过程、组件
    功能不允许遗漏.
    除了最终的信息是允许真正的删除(物理删除),其他任何有关联的数据不允许删除,如果有一些不需
    要的记录只做删除标记(逻辑删除)
    对修改删除操作提供自动刷新功能,并对任何删除操作进行再次确认的工作。
    所有的asp页面文件最顶端必须加上 <% Option Explicit %> 语句。
    由于我们采用asp编写系统,必须在每一个asp页面加上asp过期的语句。
    如果后台数据库对字段有限制,必须在前台进行控制。
    系统对内每一个涉及权限的界面都必须加入用户验证及权限认证。
    对于信息处理后台必须提供修改、查询、删除、列表等功能,前台在常使用的地方应提供查询功能。
    在权限控制方面采用两级控制,即此用户没有访问和管理权限的页面上不显示,同时在此页中也加上权
    限控制,防止其他人用输入绝对路径的方法访问此页,涉及到删除功能的要特别注意。
    在信息比较多的栏目必须提供分页功能。首页一般从栏目提取3-5条,其他的在更多中显示,在栏目中一
    般每一页显示10-20条。
2.5、结构合理:
    为保证数据库的完整性及改善数据库访问及节省网络通信的时间,对于一般静态的数据库访问的SQL
    语句,建议使用后台的触发器,存贮过程。
    提倡将一些常用、共用的语句集合以函数的形式提供
    迭代、循环层次深或不能确定的,尽量避免使用递归
    尽量使用精确查询,对太多的数据集SQL语句应尽量避免NOT、LIKE等降低查询速度的查询匹配;如果
    要用到这样的查找,可以提供模糊和精确查找的入口。
2.6、编码标准:
    每个人的目录应该按照模块功能命名
    所有的表单的域值的都要进行合法性验证,而且是在客户端使用JavaScript 或者 Jscript编码,不许使
    用VBScript。
    上传文件时,必须对上传的文件做一定的限制,如果只是上传固定格式的文件,则对此格式做校验,如果
    没有限定格式则对asp、jsp、php等脚本文件进行限制,所有的上传文件必须放在一个大目录下,然后根
    据自己的需要在大目录下创建子文件夹,名小组根据小组负责的子系统的需要创建相应的大目录。对文件
    格式校验放在客户端使用JavaScript 或者 Jscript编码;
上传组件统一用 LyfUpLoad.dll 组件。
    所有必须有权限才能操作的功能页面,必须先进行权限的认证。
    所有的删除功能在执行删除之前,必须在访问者确认的前提下才能进行删除,确认的认证在客户端使用
    JavaScript 或者 Jscript编码。
    重要的信息(如此信息具有权限的人才能浏览的信息)录入的功能在执行提交之前,必须在访问者确认
    的前提下才能进行提交,确认的认证在客户端使用JavaScript 或者 Jscript编码。
    对数据库的操作必须使用存储过程或者组件来完成的,只用他们来完成。适当的用页面SQL语句。
    在用SQL语句进行数据库操作时,必须对特殊字符进行转义,尤其是单引号"'"这个符号,建议对特殊字
    符转义要进行同一规则。
    注意错误处理
编程中要考虑函数的各种执行情况,尽可能处理所有流程情况。
将函数分两类:一类为与屏幕的显示无关,二类为与屏幕的显示有关。
对于与屏幕显示无关的函数,函数通过返回值来报告错误。
对于与屏幕显示有关的函数,函数要负责向用户发出警告,并进行错误处理。
    某一功能,如果重复实现三遍以上,即应考虑模块化,将它写成通用函数。并向小组成员发布。同时
    要尽可能利用其它人的现成模块。
    尽量避免使用重复的代码。
    尽量借用源程序,拿源程序修改,而不用自己编码。源程序可以是本地,也可以是网上,但必须和先
    有的编码规范一致。
    需要用到事务操作的地方,必须用事务操作。比如数据的完整性和asp页面的事务操作。
例:
conn.BeginTrans
    conn.Execute StrSql_Menu
    conn.Execute StrSql_Templet
    conn.CommitTrans
    连接对象和数据集合用完后做失效或关闭处理。
    涉及到密码的问题一定要用加密组件,不能用明码
    为增加程序的可阅读性,功能多的参数多的程序要尽可能做注释。在满足功能完成的情况下,程序功能尽可能的分开
    重要的页面参数的传递不要用明码。
    代码注释约定
所有过程、函数的开始部分都应有描述其功能的简要注释。当传递给过程、函数的参数的用途不明显,或过程、函数对参数的取值范围有要求时,应加以说明。如果过程、函数改变了函数和变量的返回值(特别是通过参数引用来改变),也应在过程、函数的开始部分描述该返回值。
过程、函数开始部分的注释应包含以下区段标题。相关样例,请参阅后面的"格式化代码"部分。
区段标题 注释内容
目的: 过程、函数的功能(不是实现功能的方法)。
假设: 其状态影响此过程、函数的外部变量、控件或其他元素的列表。
效果: 过程、函数对每个外部变量、控件或其他元素的影响效果的列表。
输入: 每个目的不明显的参数的解释。每个参数都应占据单独一行并有其内部注释。
返回: 返回值的解释。

请记住以下几点:
每个重要的变量声明都应有内部注释,描述变量的用途。
应清楚地命名变量、控件和过程、函数,仅在说明复杂细节时需要内部注释。
应在 Script 的开始部分包含描述该 Script 的概述,列举对象、过程、函数、运算法则、对话框和其他系统
从属物。有时一段描述运算法则的假码是很有用的。
    格式化代码
应尽可能多地保留屏幕空间,但仍允许用代码格式反映逻辑结构和嵌套。以下为几点提示:
标准嵌套块应缩进 4 个空格。
过程、函数的概述注释应缩进 1 个空格。
概述注释后的最高层语句应缩进 4 个空格,每一层嵌套块再缩进 4 个空格。例如:
'******************************************************************
' 目的:    返回指定用户在 UserList 数组中第一次出现的位置。
' 输入:    strUserList():   所查找的用户列表。
'           strTargetUser:   要查找的用户名。
' 返回:    strTargetUser 在 strUserList 数组中第一次出现时的索引。
'           如果目标用户未找到,返回 -1。
' 日期:     Designed by MS 2000/9/12
'******************************************************************

Function bf_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
2.7、数据一致性:
在编写程序的时候始终应考虑数据的一致性,解决数据一致性的问题,目前我们采用下列方法:
    增加数据:增加数据时应增加与它相关的数据表中的记录。(如在部门表中增加部门,相应的部
    门全景栏目表中也应该增加相应的记录)。同一个数据只许有一个入口,而不许有两个或多个入
    口。数据有入必须有出。
    修改数据:整个系统采用id关联的办法(如果大家没有采用id关联的请更正过来),此id是不允
    许修改或删除的。其他的信息根据具体情况进行修改。
    删除数据:对于系统管理的删除数据不做真正的删除,只做删除标识。对于信息管理的删除如果不
    涉及到其他的数据表允许删除,请在删除前再做一次确认工作。
2.8、备份原则:
    程序员对自己开发的每个程序必须在本机上有备份,如果开发密集,必须备份多次多个版本,同时
    必须有版本和版本时间说明,形成开发文档资料。
    对自己创建的数据表,其结构和说明必须有备份。
2.9、错误处理:
    前台校验的报错提示统一采用JS 弹出的提示框。
    后台能明确错误类型及错误内容的报错也统一采用JS 弹出的提示框。
    后台不能明确错误类型及错误内容的报错采用统一的报错页面提示;
具体操作方法:
a.    在程序前面加上 On error resume next 语句
b.    在程序后面加上下面代码:
If Err.Number <> 0 Then
  call error_show()
End If
3、数据库的操作
3.1、数据表定义:
    数据表的定义严格按照数据库第三范式。
    在满足功能的前提条件下,尽量节约数据空间,减少字段和数据冗余。
    定义字段必须有一定意义,不能随意。
    数据表的定义说明按照以下规范说明,以方便阅读和数据表的再生成:比如
/* 委托性质定义表  Consign*/
Create Table  Consign  (
   ssID     Integer  Not Null IDENTITY (1, 1) Primary Key,
   ConsignTypeCode  Char(6),        /* 委托性质代码  */
   ConsignName      VarChar(100),  /* 委托性质描述  */
   Remark           VarChar(60),     /* 备注   */
   LimdDays        Integer default 0,   /*超期限定天数*/
   CalculateTaxRate  Numeric(18,6) default 0    /*计税率*/
)
    数据表在数据导入导出,或数据备份恢复时字段定义不改变,满足数据的完整性和可靠性。
3.2、数据表操作:
    直接操作数据库数据的删除操作要慎重,没有特别情况,truncate命令不许用。
    不许在不经技术主管同意的情况下,擅自修改或删除不属于你程序设计范围的数据。
    数据表、视图、trigger、job、函数、存储过程等的建立必须在考虑好的前提下经过技术主管确认后
    建立,否则后果自负。
    数据库每个表都应建相应的索引,不许为空的字段在数据库中必须设为非空,否则在数据库中要求用
    触发器、约束条件限定该字段不能为空。

4、系统开发流程

回复列表 (共1个回复)

沙发

写得很好呀,辛苦了,又让我见识了许多!

我来回复

您尚未登录,请登录后再回复。点此登录或注册