JAVA开发规范.docx
- 文档编号:7768017
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:27
- 大小:35.61KB
JAVA开发规范.docx
《JAVA开发规范.docx》由会员分享,可在线阅读,更多相关《JAVA开发规范.docx(27页珍藏版)》请在冰豆网上搜索。
JAVA开发规范
JSP产品
开发规范
文档控制/DocumentControl
修改记录
日期
作者
版本
备注
审阅人
日期
审阅人
版本
备注
分发
日期
分发人
分发对象
备注
目录
第一章、概述4
1.1、目的4
1.2、范围4
1.3、文档约定4
1.4、相关概念及词汇列表4
1.5、相关角色5
第二章、协作规范6
2.1、参与协作开发6
2.3、相关规范6
第三章、设计规范8
3.1、JAVA存放位置8
3.2、页面存放位置9
3.3、配置文件存放位置9
3.4、业务代码位置10
3.5、数据库设计10
3.6、Model规范11
3.7、Design配置规范11
3.8、JAVA类规范12
3.9、JSP界面规范13
3.10、properties资源文件规范14
第四章、代码规范16
4.1、命名规范16
4.2、风格规范21
第一章、概述
1.1、目的
对于代码,首要要求是它必须正确,能够按照程序员的真实思想去运行;第二个的要求是代码必须清晰易懂,使别的程序员能够容易理解代码所进行的实际工作。
通过建立开发规范,形成开发小组编码约定,提高程序的可靠性、可读性、可修改性、可维护性、可继承性和一致性,可以保证程序代码的质量,继承软件开发成果,充分利用资源,使开发人员之间的工作成果可以共享。
1.2、范围
1、项目组成员;
2、技术开发人员;
3、其他经公司认可的必要知情的人员。
1.3、文档约定
本文档采用MSWord2003软件编写,采用统一风格排版,正文风格为:
五号中文宋体、五号英文Arial字体、行距1.5行;
针对需要重点注意的段落,采用红色描色。
一般来说,各章内容相对独立,构成全文的有效组成部分。
1.4、相关概念及词汇列表
【同步代码】
在进行开发的过程中将本地的代码和SVN服务器的代码进行同步,在eclipse中的操作叫SynchronizewhitRepository。
【合并代码】
在同步的过程中,发现本地的代码和服务器上的代码都有所改变,这个时候会产生冲突,就需要合并代码。
【签入】
在进行开发的过程中将代码放入SVN服务器的操作叫签入(check-in),在eclipse中的操作叫提交。
【签出】
在进行开发的过程中将代码从SVN服务器下载下来的操作叫签出(check-out),在eclipse中的操作叫更新。
1.5、相关角色
【开发人员】
根据开发规范,进行日常开发工作。
【SVN管理员】
管理SVN服务器,包括开通帐号、停止帐号、处理SVN遇到的问题。
第二章、协作规范
开发人员编写程序的过程中,每个程序都会有很多不同的版本,这就需要开发人员很好的管理代码,在需要的时间可以取出需要的版本,并且每个版本都需要一个完成的说明和标记。
我们公司采用SubVersion(简称SVN,主要用于定制项目管理)和Rationalteamconcert(简称RTC,主要用于产品管理)做为版本管理工具,在多个开发人员开发同一段代码的过程中,版本的管理和协作规范显得尤为重要。
2.1、参与协作开发
如何参与协作开发,具体参考以下文档:
1、SVN:
《SVN使用指南.doc》
2、RTC:
《RTC使用指南.doc》
2.3、相关规范
1、开发环境一律使用公司标准开发环境,如使用自己的开发环境,遇到问题则自己行解决;
2、每个开发人员都有自己的帐号和密码,禁止使用其他开发人员的帐号和密码,可以保证每个版本都能找到相应的开发人员,如需开通新帐号密码,请告知SCM管理员;
3、遇到SCM服务器问题,应及时寻找SCM管理员帮助解决,避免自己去尝试解决导致服务器崩溃;
4、发现冲突必须经过手动合并后才能上传到SCM服务器上,不能将其他开发人员的代码直接覆盖,导致代码丢失;
5、上传的代码必须保证是能运行的代码,不能将未经过测试的代码就上传SCM服务器上,导致其他发开人员项目启动不了;
6、每天下班前将当天开发的已完成的代码提交到服务器上;
7、每天早上来到公司应该同步SCM服务器,将最新的代码更新到本地,可以避免服务器崩溃后找不到最新的代码。
注:
开发人员必须遵守以上规范,如发现未遵守以上规范,导致代码丢失或者影响其他开发人员正常工作的行为,会给予相应的处罚
第三章、设计规范
开发人员在编程过程代码目录结构、业务逻辑在什么地方、配置文件存放位置等都需要规范,以便其他开发人员快速查找文件,减少开发过程中的沟通,减少维护成本。
3.1、JAVA存放位置
src是存放JAVA代码的目录,我们公司所有的项目的包名前面都有com.landray.kmss,后面接的是项目名称,如HR项目就是com.landray.kmss.hr,下面是HR的各个模块,如绩效考核模块:
com.landray.kmss.hr.pm。
我们公司采用三层架构(struts、hibernate、spring),JAVA代码分成五个目录存放,目录包括action、form、dao、model、service,还有一个ApplicationResources.properties资源文件文件,每个模块都包含五个目录和一个资源文件。
代码结构如下:
com.lanray.kmss.项目名称
——模块1
——子模块(如归档模块)
——action
——constant
——dao
——hibernate
——form
——model
——service
——spring
——util
——ApplicationResources.properties
——模块2
——模块3
例子:
com.landray.kmss.hr.pm.action
com.landray.kmss.hr.pm.archive(绩效考核归档模块)
com.landray.kmss.hr.pm.dao
com.landray.kmss.hr.pm.dao.hibernaete
com.landray.kmss.hr.pm.form
com.landray.kmss.hr.pm.model
com.landray.kmss.hr.pm.service
com.landray.kmss.hr.pm.service.spring
com.landray.kmss.hr.pm.ApplicationResources.properties
3.2、页面存放位置
页面文件存放在WebContent目录下面,代码结构如下:
WebContent
——项目名称
——模块1
——模块2
——模块3
例子:
WebContent
——hr
——pm
——hr_pm_action
——hr_pm_angle
——resources(可选)
——retain
——salary
发现多个模块使用的文件的直接存放在模块下
resources存放JS、图片、样式、静态HTML
3.3、配置文件存放位置
配置文件名
放置路径样例
spring配置文件
WebContent/WEB-INF/KmssConfig/sys/organization/spring.xml
枚举类型文件
WebContent/WEB-INF/KmssConfig/sys/organization/enums.xml
设计信息配置文件
WebContent/WEB-INF/KmssConfig/sys/organization/design.xml
struts配置文件
WebContent/WEB-INF/KmssConfig/sys/organization/struts.xml
校验配置文件
WebContent/WEB-INF/KmssConfig/sys/organization/validation.xml
Hibernate配置文件
WebContent/WEB-INF/KmssConfig/sys/organization/hibernate.xml
design、spring.xml等文件应存放WebContent\WEB-INF下的KmssConfig目录下面,代码结构如下:
WebContent
——WEB-INF
——KmssConfig
——项目名称
——模块1
——data-dict
——模块2
例子:
WebContent
——WEB-INF
——KmssConfig
——hr
——pm
——data-dict
——HrPmAction.xml
——design.xml
——spring.xml
——hibernate.xml
——struts.xml
——validation.xml
——enums.xml
——retain
3.4、业务代码位置
业务代码均在spring或者dao中开发,action只用于页面的跳转,禁止在action写大量业务代码,禁止对model进行赋值操作,禁止多次调用service的更新操作,禁止直接调用dao
注:
开发人员在开发过程中请严格遵循以上代码结构
3.5、数据库设计
数据库设计在开发中如有更改,要及时维护PowerDesigner
没有必要情况不要写数据库特性的sql语句,尽量使用HQL语句,如有特殊情况特殊处理
3.6、Model规范
model里面不能使用基础类型,只能使用对象类型,如:
double类型、int类型等是不能使用,要使用Double类型、Integer类型等
hbm中String的length大于1500的不能超过5个,否则使用clob属性
针对类似Clob、Blob等大字段类型的字段,必须采用字段延时加载的模式,修改样例如下:
1、hbm文件:
name="docContent" column="doc_content" update="true" insert="true" not-null="false" type="mon.dao.ClobStringType" lazy="true" length="1000000"/> 2、model类(需实现net.sf.cglib.transform.impl.InterceptFieldEnabled接口): protectedStringdocContent; publicStringgetDocContent(){ return(String)readLazyField("docContent",docContent); } publicvoidsetDocContent(StringdocContent){ this.docContent=(String)writeLazyField("docContent", this.docContent,docContent); } 3.7、Design配置规范 -design中配置模块首页(homepage) 例如: --知识库主页配置--> urlPrefix="km/doc" url="/moduleindex.jsp? nav=/km/doc/tree.jsp&main=%2Fkm%2Fdoc%2Fkm_doc_knowledge%2FkmDocKnowledge.do%3Fmethod%3DlistChildren%26s_path%3D%25E6%2589%2580%25E6%259C%2589%25E6%2596%2587%25E6%25A1%25A3" messageKey="km-doc: kmDoc.tree.title"/> 注意: url需要转码,并且不能将s_css=default配置在里面 错误的配置: --知识库主页配置--> urlPrefix="km/doc" url="/moduleindex.jsp? nav=/km/doc/tree.jsp&main=/km/doc/km_doc_knowledge/kmDocKnowledge.do? method=listChildren&s_path=%E6%89%80%E6%9C%89%E6%96%87%E6%A1%A3&s_css=default" messageKey="km-doc: kmDoc.tree.title"/> -design中portlet配置需要添加morlUrl,默认配置为模块首页地址 例如: moreURL="/km/doc.index" -有“我的工作”、“系统配置”、“草稿”等属性需要在design中配置myjob、config、darft等treenode 3.8、JAVA类规范 -不能使用累赘方法(循环嵌套),循环次数不能超过两次,当出现这样的情况,需要抽取成方法,增加代码可读性 例如: PublicvoidTest(){ for(i=0;i<2;i++){ Test1(); } } PublicvoidTest1(){ for(i=0;i<2;i++){ Test2(); } } PublicvoidTest1(){ for(i=0;i<2;i++){ … } } 错误的写法: PublicvoidTest(){ for(i=0;i<2;i++){ for(j=0;j<2;j++){ for(k=0;k<2;k++){ for…. } } } } -没有使用过的变量需要删除 例如: -没有使用过的方法需要删除 -已经不需要的代码不要长篇幅的注释放在那里 -方法体需要添加注释 3.9、JSP界面规范 -jsp不允许直接写中文 例如: if(fdBeforeStartTimeReminds==null||fdBeforeStartTimeReminds==""){ alert(" messagekey="kmCalendarMain.msg.unableSendRemind.timeError"bundle="km-calendar"/>"); document.getElementById("fdBeforeStartTimeRemind").focus(); returnfalse; } 错误的写法: if(fdBeforeStartTimeReminds==null||fdBeforeStartTimeReminds==""){ alert("日程开始前提醒的时间不能为空"); document.getElementById("fdBeforeStartTimeRemind").focus(); returnfalse; } 例如: columnproperty="kmCalendarMain.docCreateTime"> messagebundle="km-calendar"key="kmCalendarMain.docCreateTime"/> column> 错误的写法: columnproperty="kmCalendarMain.docCreateTime"> 创建时间 column> -单选按钮或多选按钮需要添加 -js中alert使用的资源文件中若含有双引号,alert必须使用单引号。 例如: km.doc.subject=当前操作为“修改当前处理人”! alert(' messagekey="km.doc.subject">') 错误的写法: alert(" messagekey="km.doc.subject">") 3.10、properties资源文件规范 -properties不允许写入含有单引号或双引号的html语句,如必要资源文件需拆语句 例如: 资源文件中 sysNotifyTodo.home.you=您 sysNotifyTodo.home.notHave=没有 sysNotifyTodo.home.todo=待办事宜 jsp中 messagebundle='sys-notify-todo'key='sysNotifyTodo.home.you'/> #FF6600;"> messagebundle='sys-notify-todo'key='sysNotifyTodo.home.notHave'/> messagebundle='sys-notify-todo'key='sysNotifyTodo.home.todo'/> 错误的写法: 资源文件中 sysNotifyTodo.home.havenot=您 #FF6600;">没有 待办事宜 jsp中 messagebundle='sys-notify-todo'key='sysNotifyTodo.home.havenot'/> 第四章、代码规范 4.1、命名规范 1.数据库设计 表和字段全部小写,用“_”分隔表名或字段名中的多个词 表: [产品简称_模块简称_表简称] 样例: hr_org_dept 每个数据库的主表: 表: [产品简称_模块简称_main] 样例: km_review_main 子表名称: [产品简称_模块简称_主表简称_子表简称] 样例: km_review_main_keyword 中间表名称: [产品简称_模块简称_主表简称_字段简称] 样例: km_review_main_post 主键: [fd_id] 外键: [fd_字段名_id] 样例: fd_creator_id 字段: [fd_字段名] 样例: fd_order 字段类型: 主外键: VARCHAR2(36) 布尔: NUMBER (1) 枚举: NUMBER (2) 普通的多行文本: VARCHAR2(1500)或VARCHAR2(2000) RTF: CLOB 排序号: NUMBER(10) 注: 表名长度、字段名长度均不能超过30个字符 2.JAVA类 类名: [产品简称+模块简称+表内容简称] 样例: HrOrgDept 普通属性: [fd字段名] 样例: fdOrder、docCreator 特殊对象属性: 直接属性的类名(首字母小写) 说明: 特殊对象指该对象通过类名已经可以明确对象的含义,该对象无二义性,如: hrOrgPostType(岗位性质)。 但类似SysOrgElement(组织架构元素)的对象,它既可以表示创建者,也可以表示修改者或其他实际的业务属性,这种情况下,该对象必须以“普通属性”的格式命名,如创建者命名为fdCreator。 样例: hrOrgPostType 普通列表属性: [fd字段名的复数] 样例: fdEditors 特殊列表属性: 直接属性的类名的复数 说明: 特殊列表属性类似于特殊对象属性,与普通列表属性的区别是该类含义无二义性。 样例: hrOrgPostTypes 3.常用表名字 含义 表名 样例 备注 模板-类别中间表 [产品简称_模块简称_tmp_category] km_review_tmp_category 如果有多种模板则根据需要修改单词: tmp 相关岗位中间表 [产品简称_模块简称_主表简称_post] km_review_main_post 相关属性中间表 [产品简称_模块简称_主表简称_property] km_review_main_property 关键字中间表 [产品简称_模块简称_主表简称_keyword] km_review_main_keyword 管理员中间表 [产品简称_模块简称_主表简称_admin] km_review_main_admin 可阅读者/可使用者中间表 [产品简称_模块简称_主表简称_reader] km_review_main_reader 可编辑者/可维护者中间表 [产品简称_模块简称_主表简称_editor] km_review_main_editor 其他可阅读者 [产品简称_模块简称_主表简称_oreader] km_review_main_oreader 其他可编辑者 [产品简称_模块简称_主表简称_oeditor] km_review_main_oeditor 所有可阅读者 [产品简称_模块简称_主表简称_areader] km_review_main_areader 所有可编辑者 [产品简称_模块简称_主表简称_aeditor] km_review_main_aeditor 附件可拷贝者 [产品简称_模块简称_主表简称_attcopy] km_review_main_attcopy 附件可下载者 [产品简称_模块简称_主表简称_attdl] km_review_main_attdl 附件可打印者 [产品简称_模块简称_主表简称_attprint] km_review_main_attprint 4.常用字段 普通类型 含义 字段名 Java属性名 数据库字段类型 Java字段类型 必须 名称 fd_name fdName VARCHAR2(200) String Y 排序号 fd_order fdOrder NUMBER(10) Integ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 开发 规范