中国高校勤工助学网站程序开发质量和管理标准化
本标准化文档主要针对中国高校勤工助学网站(以下简称中勤在线)的现有技术和发展方向,对网站后台程序的开发作一份详细的规范,仅供中勤在线程序员参考学习。
本文档分为两部分,第一、程序开发标准化,其意义为规范各程序员在完成本职工作过程的一切操作行为的标准;第二、程序管理标准化,其意义为规范程序员的管理,考核,培训,奖惩。
一、 【程序开发质量标准化】
1、开发环境
目前,中勤在线的具体开发/调试/运行环境基本为:
程序:Asp 3.0
平台:Win2K Server + IIS 5.0
数据库:Access 2000/XP
随着网站的不断发展,此开发/调试/运行环境已不再适合一个大型教育类网站的技术要求。程序语言暴露出安全性不够,扩展性欠佳,移植性较差,代码混乱等现象。致使开发人员几乎很难针对过去的程序进行修改和更新,更不用说跨平台的应用;Win2k和IIS 5.0的Web平台工作不够稳定,出现“当机”现象频率过高;Access数据库在大数据量的检索中出现速度较慢的现象,并且数据备份操作烦琐,更不利于将来实现多台服务器的数据同步问题。
为了提高中勤在线的技术含量,跟上国际主流网站开发的步伐,目前网站面临重大改革,抛弃过去程序开发的道路(采用面向程序语言),及时与国际主流接轨(采用面向对象程序语言),我们有两个开发环境可供选择发展:
第一、采用Linux+Resin/Apache+Jsp(java)+Oracle/Sql Server环境方案;
第二、采用Win2K+IIS(含.net框架)+Asp.Net(C#,Vb.net)+Sql Server/Oracle环境方案;
国外,第一套方案已成为主流,广泛应用于电子商务领域,发展稳定;第二套方案推出于微软.net计划,发展前途一片光明。
首先,据中勤在线成立以来开发人员详细资料统计分析,中勤在线后台程序开发人员90%为非计算机专业本科学生,10%为计算机专业本科生与研究生,但由于其站性质,发展成为专业的面向广大社会的的门户网站的可能性很小,其开发人员可能一直局限于学生,尤其是有浓厚网络开发兴趣的非计算机专业学生。所以其开发团队可能一直存在基础不够牢固的缺点。要想灵活掌握Linux系统下的java编程具有一定难度,大部分开发人员还是习惯于Windows环境下的程序开发,并且,对于具有一定经验的Asp开发人员,学习Asp.net较学习java上手要快,关键就在于转变由面向程序的概念到面向对象的概念,这是中勤在线应选择第二套方案的第一个原因。
其次,网站初,中期程序开发所选择的开发语言为Asp,目前Asp很难移植到Linux环境下,要将现有栏目都转为Jsp程序再挂靠于Linux系统下是个浩大的工程,其工作量不下于重新开发一套完善的系统。再回看第二套方案,其Asp和Asp.net可以共存于新开发环境,这样一来,本站可在不影响正常发展以及运作的条件下,同时对原有Asp程序进行升级转换为新的Asp.net程序,逐步分块提高程序执行效率和网站整体的技术含量,真正做到发展与运作两不误,这是中勤在线应选择第二套方案的第二个原因。
综上所述,中勤在线应选择第二套开发环境,朝着面向对象的发展方向,逐步实现技术的转化和完善。
2、高效原则
作为一个程序员,无论针对哪个领域的程序开发,应该努力追求程序的效率,请各位中勤在线的程序员注意,切记以下这句话:
“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们程序员服务的!”
针对中勤在线的Web开发,我们将这句话实例化:
·尽量避免大量使用全局变量,删除无用变量;
·尽量少用Session变量;
·数据量较大时尽量使用存储过程分页;
·尽量少用“Select * ”,即使需要所有字段也应尽量一个一个按照使用的顺序罗列出来,Order By时应该尽量提前使用建立索引或者主键的字段排序;
·使用Request对象时,针对具体情况写名是用QueryString方法还是Form方法;
·所有数据库和文件对象都要在使用后尽可能早的Close,同时赋Nothing
·Asp.net开发中,尽量少用大型耗资源的系统控件,并且尽量使用CodeBehind技术,将代码和页面分开,并编译动态链接库文件;
尽量采用SQL Server 数据库;
3、编码约定
目前,中勤在线已正常运作三年有余,程序员由九七级本科生延续至现在的零二级,各个年级的程序员编码的熟悉程度和编码的方式各不一致,以至于程序编码五花八门,严格的说,从目前中勤在线的网站后台程序编码总体来看,中勤在线还停留在个人网站的水准上,看不出一个教育类大型网站的应有的水准,因此,我们的程序员必须统一编码方式,原因其一,可以体现出整个网站的整体性;其二,可以提高程序的可阅读性,方便下一阶段的程序员修改更新程序。以下为具体内容:
1、 变量先定义后使用;
2、 首字大写,尽量采用英语描述,不宜采用拼音描述;
3、变量命名基本采用匈牙利命名法则;
匈牙利命名法则基本原则是:
变量名=属性 + 类型 + 对象描述
即一个变量名由三部分信息组成,这样,程序员很容易理解变量的类型、用途,而且便于记忆。
下边是根据我站一些推荐使用的规则例子(详细命名规则请参看匈牙利命名规则):
·属性部分
全局变量:g_
常量:c_
·类型部分
指针:p_
句柄:h_
整型:i_
浮 点 型:f_
日 期 型:d_
布 尔 型:b_
字 符 型:s_
数 组 型:ary_
·描述部分
初 始 化:Init
临时变量:Tmp
其中部分规则考虑到将来.net发展的c# 变量命名规则,在Asp中可不考虑。
参考实例:c_i_InitBorderColor、g_s_TmpNewsTitle、g_i_ary_VoteNum,程序员可根据实际情况梢做改动,但必须遵循匈牙利命名法则,能够使其他程序员看变量名便知其类型和属性等关键标识符意义;
||||||4、所有控件的属性值都要使用双引号或者单引号包括起来;
5、控件的命名规则:
Button: btn
Form:frm
Select:sel
Textarea:txt
Input: ipt
Hidden: hid
6、各控件主要使用规则:
·img控件
alt:所有展示类图片都要具有能简要描述图片内容的文字说明。
·Input控件
maxlength:所有Input控件都需要制定maxlength属性,默认值为数据库中对应的字段的长度。
readonly:所有不可更改的信息都要使用readonly属性。
·Form控件
action:所有Form都要指定action,如果提交给本身就指定action=""
method:尽量使用post方式
onsubmit:所有form都要指定提交前需要的检查程序。
所有form都要有对应的reset button。
·Button控件
Onclick:form中用于提交的button不容许使用此方法,所有数据检查通过form的onsubmit激活。
·head属性
所有页面都要具有不为空的head属性。
·所有中文页面都要加上如下语句:
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
4、数据库设计
程序员在进行数据库设计前应先仔细阅读由市场部做的各项分析文档(包括可行性分析,需求分析等),查看由信息部拟订的项目所需功能列表后,仔细斟酌后进行数据库初步设计,设计完后提交数据库设计报表。详细规范如下:
·所有表必须以字符“t”(table)开头,如表tUsers,tAffriches,tMessages等等;
·所以字段必须以字符“f”(field)开头,如字段fID,fName,fTitle等等;
·较重要表中,最少创建2个预留字段,命名为fPre_Int (数字型),fPre_Str (字符型);
·设计Access数据库应有较长数据库文件名,或者与网络部协商,做成ODBC连接,防止数据库被非法下载。
·设计SQL Server数据库还应备份数据库创建SQL脚本,即备份数据库结构。
数据库设计基本
5、文件夹设置
随着中勤在线的发展,其栏目设置越来越多,经过三年的开发,现已有十多个栏目,各个栏目均由不同人员开发,各栏目文件夹的设置也是七临八乱,不成规矩,很难让别的开发人员一目了然其栏目结构。因此为了更加规范程序和页面文件夹的设置,现规定如下:
·必须设有Connections文件夹,存放数据库连接文件;
·必须设有Inc文件夹,存放包含文件和其他页面调用程序;
·必须设有Images文件夹,存放图片文件;
·必须设有Css文件夹,存放样式表文件;
·必须设有Doc文件夹,存放开发文档;
·必须设有Original Files文件夹,存放图片源文件;
·必须设有Js文件夹,存放脚本文件;
·在有上传功能的栏目中,必须设有Upload文件夹,存放上传的图片及文件;
·Asp.net栏目中,必须设置Source文件夹,存放程序C#或者Vb.net源文件;
·Asp.net栏目中,必须设置Bin文件夹,存放动态连接库文件;
·使用SQL Server库栏目中,必须设置Sql文件夹,存放数据库结构SQL脚本文件;
·必须设置Backup文件夹,存放更新前的备份文件。
6、注释与缩进
在过去的开发中,中勤在线使用的大部分为Asp脚本语言,此语言程序与页面嵌套在一起,通常被称为“意大利面条”式代码,所以阅读程序往往很费时间,在.net开发中,出现了CodeBehind技术可将代码和页面分开,在一定程度上可以减轻程序员的负担,但是要让程序更快的阅读代码,还必须在适当的部分添加注释,并且请合理采用代码缩进,在模块与模块之间,循环区块,条件区块等等都应该使用代码缩进,缩进一级为两个半角空格。
7、安全与调试
开发后期,程序员还担负着代码的调试和漏斗检测任务,其中就包括如下内容
·所有页面要在800*600,1024*768两种分辨率下运行通过;
·所有页面要在IE5.0,5.5以及6.0下运行通过没有JavaScript错误;
·所有涉及删除的操作,在用户选定以后都要再进行一次确认操作;
·检查Sql漏洞,以及每个传递参数,排除入侵可能性;
·开发完毕后必须挂在工作机房调试经内部调试一周方可正式发布;
二、 【程序开发管理标准化】
1、项目管理
程序开发总体由开发部长全面负责,开发部长根据当前人力资源分配程序员到各项目组,每个项目组必须设置一个组长,负责整个项目的进度,首先画出项目进度表,和项目操作流程和必要的开发文档。项目组长每周制定周报,由开发部长审核查阅,并且指定每周讨论会时间,每周最少两次,项目组长记录讨论具体内容。具体操作见《项目开发质量和管理标准化》。
2、奖惩机制
项目组长每周必须检查成员开发的程序,严格按照程序开发质量标准化实施,并做记录,每周统计上周报,并且每周给组员记分,提交部长查阅。项目开发完毕后,项目组全体成员必须集中讨论和相互检查程序,做出最后修改,项目组长提交项目本组开发明星,奖金体现在当月工资。另外,项目组长应根据每个组员的工作量,代码编写的效率,规范方面对每个员工有不同的评价体现在项目总开发文档中,以便人力资源部考察和发放酬劳。