日期:2009-01-30  浏览次数:20982 次

本标准化文档主要针对中国高校勤工助学网站(以下简称中勤在线)的现有技术和发展方向,对网站后台程序的开发作一份详细的规范,仅供中勤在线程序员参考学习。
本文档分为两部分,第一、程序开发标准化,其意义为规范各程序员在完成本职工作过程的一切操作行为的标准;第二、程序管理标准化,其意义为规范程序员的管理,考核,培训,奖惩。

一、 【程序开发质量标准化】
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 (字符型);