一千零一夜产品部系统开发规范V1.0一千零一夜途遇科技有限公司2015-11-03修改记录目录1前言 (4)2开发管理 (4)3项目周期 (4)4命名规范 (5)4.1项目编号命名规范 (5)4.2文档命名规范 (5)4.3路径管理 (5)4.4jsp/html命名规范 (6)4.5数据库命名规范 (8)4.5.1表名规范 (8)4.5.2字段规范 (8)5文档规范 (8)6代码规范 (9)6.1Java源代码规范 (9)6.1.1命名 (9)6.1.2代码格式 (11)6.1.3注释 (12)6.1.4其他 (13)6.2jsp/html代码规范 (13)6.3数据库开发规范 (15)6.3.1主键 (15)6.3.2日期类型 (16)6.3.3固定字段 (16)6.3.4取值规范 (16)6.3.5数据库开发工具 (16)6.3.6Sql书写规范 (17)6.4其他规范 (17)7实战代码规范 (18)7.1Java源代码规范 (18)7.1.1java代码命名与格式 (18)7.2jsp/html代码规范 (26)8FAQ (29)8.1Logic类中新增数据方法怎么写 (29)8.2Logic类中修改数据方法怎么写 (30)8.3Logic类中删除数据方法怎么写 (31)8.4怎样创建一个没有底部按钮的窗口 (32)8.5怎样设置弹出窗口的标题 (32)8.6怎样重写提交数据的方法 (33)8.7怎样创建单grid的页面 (33)8.8怎样多个页签的grid的页面 (34)8.9怎样创建左边树右边grid的页面 (34)9代码检查规定 (34)10附录1:JPA使用指南javax.persistence的注解配置 (34)1前言为了使软件开发过程有章可循,保证软件质量,加强开发管理。
2开发管理3项目周期公司项目开发周期分为以下几个步骤:4命名规范4.1 项目编号命名规范4.2 文档命名规范4.3 路径管理路径结构如下:项目名称|_database(数据库数据)|_docs(文档)|_参考文档(项目参考文件)|_需求&设计(需求文件及各种设计文档)|_开发计划|_软件测试|_部署&培训|_工作汇报|_trunk(主目录)|_WebRoot(应用文件)|_src(源代码)|_业务模块一(某一个功能分类,如工具类)|_com.navinfo.分类英文名(源代码目录)||_entity (数据模型)|_logic (逻辑实现类)|_services (逻辑接口层)|_action (Action层)|_utils(当前功能的工具类或常量定义)|_|_spring/ (spring的配置文件)|_hibernate/ (hibernate的配置文件)|_struts/ (struts的配置文件)|_quartz/ (quartz的配置文件)注,红色字体的部分和原有规范不同,主要是业务模块和配置文件放在同一个根目录下,为防止eclipse的配置顺序导致源代码和配置文件分离的很远。
|_业务模块二|_......示例:图:Src路径4.4 jsp/html命名规范jsp与html文件名全部小写,并遵循如下的规范:数据/内容显示页名词,多个单词用下划线分隔,要求能说明显示内容的信息,为避免冲突,可加上"_list"。
例如:new_message.html 或my_file_list.jsp操作处理页命名格式:名词_下划线_动词,例如:file_delete.jsp。
图:Jsp命名含frame页面<frameset>中<frame>的name属性命名的格式是①xxx._②xxx_③xxx①xxx部分用来标识当前页面隶属于整个系统中的哪一功能模块。
如:属于ebwebmail则被表示为ebwebmail,其它情况依次类推。
②xxx部分标识当前页面所要完成的功能。
如:完成用户登录的功能则被标识为login,其它情况依次类推。
③xxx部分用来用来表示页面在浏览器窗口所处的位置。
处于浏览器窗口的顶部则标识为top,其它情况依次类推。
例如:ebwebmail_inbox_top.jsp<frame> src属性相应的文件名根据情况建议在原命名规范上用下划线加上所处窗口的位置。
javascript脚本方法脚本函数都以①xxx_②xxx的方式命名。
①xxx对应页面隶属的模块。
②xxx表示函数所要实现的功能(动宾结构),多个单词用下划线连接。
例如:ebwebmail_send_mail()模块通用的脚本函数必须集合于一个js文件中,在页面上通过<script language="javascript" src="url"></script>形式导入。
js文件名命名使用模块名,例如:ebwebmail.js。
如果项目已经提供了公共js脚本,则优先使用公共js脚本中提供的函数。
所有定义方法的<script>元素定义在<head></head>中或</body>后。
javascript脚本内部变量与参数单词之间用下划线分隔且全部小写,例如:var file_size。
<form>表单name属性除系统模版生成的form外,统一以"form_"开头,其后加该表单所需收集的信息的作用或动作,例如:form_file_upload 或form_send_mail。
表单elements表单element的名称以element需收集的信息标示命名,单词之间使用下划线分隔且全部小写,例如:<input type="text" name="username"><input type="radio" name="file_type"><textarea name="content" rows="5" cols="40">cookie命名命名格式:模块名_存储信息名词(多个单词用下划线分隔) ,全部大写,例如:EBWEBMAIL_SORT_TYPE。
window.open中name参数的命名javascript 的window.open方法中有一个name的参数,浏览器约定同样的名字的窗口只能打开一个,如果程序间名字重复将相互冲突。
如果不限制打开窗口数,可以指定''或""(不是null),否则需要加上模块名,例如ebwebmail_viewmail。
4.5 数据库命名规范4.5.1表名规范关于命名的规范,统一使用大写,单词之间用下滑写,采用三段式或者二段式。
a)头一段标识数据库对象类型(T-表, V-视图,SP-存储过程,TR-触发器)b)二段标识业务的类型,详见《四维产品体系.mmap》c)三段和四段标识表的属性。
(订单:ORDERS,计划:PLANS,路线:ROUTES)例如:系统用户表,系统用户状态字典表(T_CP_URERS_STATES),订单表(T_BD_BLL_ORDERS)4.5.2字段规范所有表示boolean含义的字段,在前方需要加入IS_前缀5文档规范编写文档目前主要使用的工具是Word(项目计划文档例外,需要使用Project制作,项目计划文档为非技术的客户提供Excel版本),辅助使用的工具有Visio,PowerPoint等。
⏹所有Office文档均使用Office2003兼容格式文档。
⏹文档务必保持段落格式整齐,文字字体,颜色,大小统一。
⏹如果需要摘引html页面中的内容,不能直接从html中粘贴过来(会在word文档中留下html格式),而必须先去除格式,例如:先粘贴到notepad中。
⏹务必注意中英文标点符号,文档正文一概使用中文标点符号。
⏹如果需要在文档中插图,不要使用word自带的绘图工具。
可以选择使用PowerPoint或visio。
使用PowerPoint,选择"插入"- >"对象"->"Microsoft PowerPoint 幻灯片"。
使用visio,需要另外建立visio文档,绘制完以后粘贴到word中。
Visio不得在word文档上的Visio对象上进行修改,要在源文件上修改后粘贴到word文档上。
⏹数据建模使用PowerDesigner工具。
在项目进入开发阶段后,所有的的对PowerDesigner的修改需要同时提供相应修改的sql语句,并放到系统的文档目录下。
对数据建模的文档修改,需要由项目经理统一进行,防止发生版本不统一的情况。
⏹修改他人文档务必使用修订模式,以便保留备修改的内容。
使用修订模式,选择"工具"->"修订"->"突出显示修订",勾上"编辑时标记修订"。
6代码规范6.1 Java源代码规范6.1.1命名6.1.1.1 Package 的命名Package 的名字应该都是由一个小写单词组成,例如:com.navinfo. backplatform。
此外,对于包名我们做如下约定:⏹工具函数类包名前缀为.utils⏹test case类包名前缀为.test图:工具类包结构6.1.1.2 Class 的命名Class 的名字必须由大写字母开头而其他字母都小写的单词组成,例如:DataFile或InfoParser。
⏹Class 变量的命名变量的名字必须用一个小写字母开头。
后面的单词用大写字母开头,例如:debug 或inputFileSize。
⏹Static Final 变量的命名Static Final 变量的名字应该都大写,并且指出完整含义,例如:MAX_UPLOAD_FILE_SIZE=1024。
⏹参数的命名参数的名字必须和变量的命名规范一致。
⏹数组的命名数组应该总是用下面的方式来命名:byte[] buffer;而不是:byte buffer[];⏹方法的参数使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字:SetCounter(int size){this.size = size;}6.1.2代码格式6.1.2.1 文件头声明源文件的头部需要一个history段,对于每次对源文件的重大改动,都需要在history段中注明。
该段定义在package和import之间,例如:/****************************************************** HISTORY* 功能描述:* 2002/01/29 Biz 创建文件** 2002/02/19 kevin 增加新功能********************************************************/代码块书写格式可以选择以下任意一种代码块的书写方式:if (true){//body}if (true){//body}建议使用第一种书写方式。