JAVA开发规范Word格式文档下载.docx
《JAVA开发规范Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVA开发规范Word格式文档下载.docx(27页珍藏版)》请在冰豆网上搜索。
![JAVA开发规范Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/23/6ec4d630-725f-41c6-8a68-f9bdf6d21aa7/6ec4d630-725f-41c6-8a68-f9bdf6d21aa71.gif)
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
例子:
——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目录下面,代码结构如下:
——WEB-INF
——KmssConfig
——项目名称
——模块1
——data-dict
——模块2
——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文件:
<
property
name="
docContent"
column="
doc_content"
update="
true"
insert="
not-null="
false"
type="
mon.dao.ClobStringType"
lazy="
length="
1000000"
/>
2、model类(需实现net.sf.cglib.transform.impl.InterceptFieldEnabled接口):
protectedStringdocContent;
publicStringgetDocContent(){
return(String)readLazyField("
docContent);
}
publicvoidsetDocContent(StringdocContent){
this.docContent=(String)writeLazyField("
this.docContent,docContent);
3.7、Design配置规范
-design中配置模块首页(homepage)
例如:
!
--知识库主页配置-->
homePage
urlPrefix="
km/doc"
url="
/moduleindex.jsp?
nav=/km/doc/tree.jsp&
amp;
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="
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"
-design中portlet配置需要添加morlUrl,默认配置为模块首页地址
moreURL="
/km/doc.index"
-有“我的工作”、“系统配置”、“草稿”等属性需要在design中配置myjob、config、darft等treenode
3.8、JAVA类规范
-不能使用累赘方法(循环嵌套),循环次数不能超过两次,当出现这样的情况,需要抽取成方法,增加代码可读性
PublicvoidTest(){
for(i=0;
i<
2;
i++){
Test1();
}
PublicvoidTest1(){
Test2();
…
错误的写法:
for(i=0;
i++){
for(j=0;
j<
j++){
for(k=0;
k<
k++){
for….
-没有使用过的变量需要删除
-没有使用过的方法需要删除
-已经不需要的代码不要长篇幅的注释放在那里
-方法体需要添加注释
3.9、JSP界面规范
-jsp不允许直接写中文
if(fdBeforeStartTimeReminds==null||fdBeforeStartTimeReminds=="
"
){
alert("
bean:
messagekey="
kmCalendarMain.msg.unableSendRemind.timeError"
bundle="
km-calendar"
/>
);
document.getElementById("
fdBeforeStartTimeRemind"
).focus();
returnfalse;
日程开始前提醒的时间不能为空"
sunbor:
columnproperty="
kmCalendarMain.docCreateTime"
>
messagebundle="
key="
/sunbor:
column>
创建时间
-单选按钮或多选按钮需要添加<
lable>
/lable>
标签,如:
label>
inputtype=”radio”name=”fdYesNo”value=”true”>
是<
/label>
inputtype=”radio”name=”fdYesNo”value=”false”>
否<
-js中alert使用的资源文件中若含有双引号,alert必须使用单引号。
km.doc.subject=当前操作为“修改当前处理人”!
alert('
km.doc.subject"
'
)
alert("
3.10、properties资源文件规范
-properties不允许写入含有单引号或双引号的html语句,如必要资源文件需拆语句
资源文件中
sysNotifyTodo.home.you=您
sysNotifyTodo.home.notHave=没有
sysNotifyTodo.home.todo=待办事宜
jsp中
messagebundle='
sys-notify-todo'
key='
sysNotifyTodo.home.you'
&
nbsp;
fontstyle="
color:
#FF6600;
b>
sysNotifyTodo.home.notHave'
/font>
sysNotifyTodo.home.todo'
sysNotifyTodo.home.havenot=您&
没有<
/b>
待办事宜
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]
相关属性中间表
[产品简称_模块简称_主表简称_property]
km_review_main_property
关键字中间表
[产品简称_模块简称_主表简称_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
排序号
fdOrder
Integ