JAVA代码规范.docx

上传人:b****7 文档编号:10251078 上传时间:2023-02-09 格式:DOCX 页数:32 大小:42.87KB
下载 相关 举报
JAVA代码规范.docx_第1页
第1页 / 共32页
JAVA代码规范.docx_第2页
第2页 / 共32页
JAVA代码规范.docx_第3页
第3页 / 共32页
JAVA代码规范.docx_第4页
第4页 / 共32页
JAVA代码规范.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

JAVA代码规范.docx

《JAVA代码规范.docx》由会员分享,可在线阅读,更多相关《JAVA代码规范.docx(32页珍藏版)》请在冰豆网上搜索。

JAVA代码规范.docx

JAVA代码规范

技术部代码规范

 

JAVA代码规范

V1.0

 

目录

制订人列表2

文档版本历史2

目录3

1.总览7

1.1.前言7

1.2.适用人员7

1.3.范围7

1.4.定义和术语7

1.5.相关引用文档8

2.规范内容8

2.1.运行环境8

2.2.源文件结构规则8

2.2.1.类/接口9

2.2.2.类变量的声明9

2.3.排版规则(必须使用)10

2.3.1.方法名(必须使用)10

2.3.2.缩进(必须使用)10

2.3.3.在方法的局部变量声明和语句之间加一个空行(建议使用)10

2.3.4.简单语句(建议使用)10

2.3.5.大括号(必须使用)11

2.3.6.语句排版规则(必须使用)11

2.3.7.IF语句(建议使用)11

2.3.8.For循环(必须使用)11

2.3.9.Switch(必须使用)12

2.3.10.Try、Catch和Finally(建议使用)12

2.3.11.表达式排版规则13

2.3.11.1.空格(必须使用)13

2.3.11.2.一元操作符(必须使用)13

2.3.11.3.强制转型(建议使用)13

2.3.11.4.单行(必须使用)14

2.4.注释规则14

2.4.1.原则(必须使用)14

2.4.2.JavaDoc15

2.4.2.1.创建文件(必须使用)15

2.4.2.2.修改文件(必须使用)15

2.4.2.3.类方法(必须使用)16

2.4.2.4.单行(必须使用)16

2.4.2.5.块注释规则(必须使用)17

2.4.2.6.尾端注释规则(建议使用)17

2.4.3.文档化的部分17

2.4.3.1.参数(必须使用)17

2.4.3.2.变量(必须使用)17

2.4.3.3.类(必须使用)18

2.4.3.4.接口(必须使用)18

2.4.3.5.局部变量(建议使用)18

2.4.3.6.方法内部注释(建议使用)19

2.4.3.7.方法(必须使用)19

2.5.命名规则20

2.5.1.包命名规则(必须使用)20

2.5.2.类命名规则(必须使用)20

2.5.3.接口命名规则(必须使用)20

2.5.4.方法命名规则(必须使用)20

2.5.5.变量命名规则(必须使用)21

2.5.6.常量命名规则(必须使用)21

2.5.7.方法的参数命名规则(必须使用)21

2.5.8.数组命名规则(必须使用)22

2.5.9.Getter方法命名规则(必须使用)22

2.5.10.Booleangetter方法命名规则(必须使用)22

2.5.11.Setter方法命名规则(必须使用)22

2.5.12.异常命名规则(必须使用)23

2.6.变量规范23

2.6.1.变量使用(必须使用)23

2.7.方法规范(必须使用)23

2.8.数字精度24

2.9.可读性24

2.9.1.使用集合时必须使用泛型;24

2.9.2.一个类代码行不能超过1000行;一个方法代码行不能超过200行;每行代码长度不超过130个字符;24

2.9.3.优先级(必须使用)24

2.9.4.数字(必须使用)24

2.9.5.代码间隔(必须使用)25

2.9.6.代码难度(必须使用)25

2.9.7.循环(建议使用)25

2.10.程序的效率25

2.10.1.避免在循环条件中重复取值25

2.10.2.字符串类型的变量拼接,超过3次的拼接,必须使用StringBuffer,StringBuilder;26

2.10.3.为List,Set,Map,StringBuffer等定义初始大小;26

2.10.4.使用System.arraycopy()代替通过循环复制数组;26

2.10.5.禁止在循环内查询数据库;JOB等存在大集合数据查询需求的除外;26

2.10.6.循环(必须使用)26

2.10.7.字符串(必须使用)26

2.10.8.对象(必须使用)27

2.11.质量保证规则27

2.11.1.关闭与释放(必须使用)27

2.11.2.合理的使用(必须使用)28

2.11.3.比较操作(必须使用)28

2.11.4.异常28

2.11.4.1.不要“用纸包火”(不可使用)28

2.11.4.2.传递业务异常时尽量使用原始对象(建议使用)29

2.11.5.日志29

2.11.5.1.日志类库(建议使用)29

2.11.5.2.日志输出(必须使用)29

2.11.5.3.日志信息(必须使用)30

2.11.5.4.异常日志输出(必须使用)30

2.11.6.信息安全(必须使用)30

2.11.7.容错(必须使用)31

1.总览

1.1.前言

代码之于程序员,就像零件之于机械工,庄稼之于农民,它是软件的基石,一行行代码都是程序员的心血经过日日夜夜凝结成的。

做为一个程序员,应该像母亲呵护孩子一样呵护自己的代码,它不仅仅是一行一行的文字,它是一个程序员的尊严和价值所在;它是活的,你甚至能感受到它的心跳。

编码规范只是大家达成一致的约定,这样大家的代码就可以互相看懂,维护起来更加容易,思想更畅快的交流,经验更快的得到传播。

代码规范不是束缚程序员的桎梏,应该知道,不遵守规范的个性的代码并不代表程序员的性格,并不能张扬个性。

个性应该体现在用更简单、更优雅、更易读、更易理解以及算法实现效率更高等方面。

1.2.为什么要统一规范?

阅读方便、爽,因为遇到和自己不同的书写和规范时会感觉很不爽。

formatter不同会带来代码结构和格式的变化,导致对比比对时到处都是不同。

1.3.适用人员

对JAVA代码进行代码开发和代码Review的相关人员。

1.4.范围

编码规范定义了所有代码编写者在编写Java代码时应遵守的一些规则和习惯。

本规范采用以下术语描述:

规则:

编程时强制必须遵守的原则。

建议:

编程时必须加以考虑的原则。

示例:

对此规则或建议给出例子。

1.5.定义和术语

Pascalcase–所有单词首字母大写,其他字幕小写。

例:

Person,Order

Camelcase–除了第一个单词,所有单词第一个字母大写,其他首字母小写。

OrderNum,dataTime

在后面的描述中我们使用Pascal代表第一种表示方式,Camel代表第二种表示方式。

不可使用-规范中涉及的不可使用的内容,坚决不能使用

建议使用-规范中涉及的建议使用的内容,结合实际业务需求,开发习惯,最大程度的符合规范。

必须使用-规范中涉及的必须使用的内容,所有研发人员严格按照规范进行开发

1.6.相关引用文档

http:

//www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm

设计模式-可复用面向对象软件的基础机械工业出版社

Java与模式闫宏著

Java编码规范人民邮电出版社

重构-改善既有代码的设计MartinFowler2003

2.规范内容

2.1.运行环境

✓JDK1.8.0

✓开发工具Eclipse,maven,git(svn),tomcat8

2.2.源文件结构规则

✓(必须使用)所有包,类,接口,方法,属性,变量,参数均使用英文单词进行命名.

✓(必须使用)命名包,类,接口,方法以及变量时,尽量使用贴近问题域的且意义丰富的名称。

✓(建议使用)修改源代码时,应尽量保持与所修改系统的编码风格保持一致

✓(必须使用)必须有package,再写import

✓packagecom.wubanf.projname.modulename.submodulename

✓(建议使用)不使用importxxx.*,使用精确导入

在xxx.*里面的内容是代码中大部分会用到则可以使用*

✓(必须使用)顺序:

标准库、第三方库、本地库空行分隔

✓(必须使用)先写包语句,再写引入语句。

✓(建议使用)package行和import行之间留一行空行。

✓(必须使用)引入的标准包名要在本地包名之前,并且包名按照字母顺序排列。

✓(建议使用)import的标准包和本地包之间留一行空行。

示例:

packagecom.wubanf.trade;

importjava.sql.DatabaseMetaData;

importjava.sql.ResultSet;

importcom.sitech.crmpd.core.config.Config;

importcom.sitech.crmpd.core.jdbc.ConnectionFactory

importcom.wubanf.trade.x

2.2.1.类/接口

✓(必须使用)先写类/接口注释,标明类/接口的用途、版本、作者等信息。

✓(建议使用)类/接口注释之后空一行,然后写类/接口声明。

✓(建议使用)extends和implements写在不同行。

✓(建议使用)异常也单写一行。

示例:

publicclassCounterSetextendsObservableimplementsCloneable

2.2.2.类变量的声明

a.(建议使用)类变量的声明顺序是:

先静态变量,再成员变量,变量定义顺序(public,protected,package,private)

b.(必须使用)一行定义一个变量,不要给多个变量赋值

c.(建议使用)实例变量尽量非public需要定义setter/getter

d.(必须使用)局部变量使用时才声明(减小作用域),声明的同时初始化

e.(必须使用)类变量的注解(@Autowire)需要写在上一行

/**

*

Copyright:

Copyright(c)2014

*

Company:

wubanf

*/

packagecom.wubanf.api.auth.model;

 

/**

*

*@author

takeseem@">杨浩

*@since0.1.0

*/

publicclassTest{

/**public静态变量*/

publicstaticStringpubStatic;

protectedstaticStringprotStatic;

staticStringpkgStatic;

privatestaticStringpriStatic;

/**public变量*/

publicStringpub;

protectedStringprot;

Stringpkg;

privateStringpri;

static{

//特别说明,为啥用静态块初始化的注释

pubStatic="";

}

{

//特别说明,为啥用块初始化的注释

pub="";

}

/**

*代码规范:

一个公共方法的示例,此方法做什么用的描述

*@paraminputXX业务或模块,做啥用的

*/

publicstaticvoidpubStaticMethod(Stringinput){

}

staticvoidpkgStaticMethod(){

}

protectedstaticvoidprotStaticMethod(){

}

privatestaticvoidpriStaticMethod(){

}

publicTest(){

}

publicvoidpubMethod(){

}

voidpkgMethod(){

}

protectedvoidprotMethod(){

}

privatevoidpriMethod(){

}

}

2.3.排版规则(必须使用)

(必须使用)所有代码提交至SVN,GIT前,都必须先进行Format;

2.3.1.方法名(必须使用)

方法名和其后的括弧之间不应有空格

示例:

intgetResult(intforInt,charforChar)

2.3.2.缩进(必须使用)

采用4个空格,注意:

一定要使用空格键。

这样可以避免使用不同的编辑器阅读程序

时,因TAB键所设置的空格数目不同而造成程序布局不整齐。

2.3.3.在方法的局部变量声明和语句之间加一个空行(建议使用)

voidmethod1(){

//声明

intanInt=0;

StringaString=null;

ObjectanObj=null;

//语句

if(condition){

}

}

2.3.4.简单语句(建议使用)

简单语句每行至多包含一条语句

示例:

argv++;//正确

argc--;//正确

argv++;argc--;//不允许这样使用!

2.3.5.大括号(必须使用)

大括号对齐,左大括号“{”应位于复合语句起始行的行尾;右大括号“}”应

另起一行并与复合语句首行对齐。

示例:

for(initialization;condition;update){

statements;

}

2.3.6.语句排版规则(必须使用)

规则4.2.4必须用“{”和“}”将if内的语句括起来。

(即使只有一条语句

的情况下)

正确:

if(condition){

System.out.println(“正确”);

}

错误:

if(condition)

System.out.println(“正确”);

2.3.7.IF语句(建议使用)

在多层嵌套的if语句中,需以尾端注释的方式表示出层次关系

2.3.8.For循环(必须使用)

for语句中的表达式要用空格分开

示例:

for(expr1;expr2;expr3)

在多层嵌套的for语句中,应以尾端注释的方式表示出层次关系

2.3.9.Switch(必须使用)

每当一个case顺着往下执行时(因为没有break语句),通常

应在break语句的位置添加注释。

下面的示例代码中就包含注释

/*fallsthrough*/

示例:

一个switch语句应该具有如下格式:

switch(condition){

caseABC:

statements;

/*fallsthrough*/

caseDEF:

statements;

break;

caseXYZ:

statements;

break;

default:

statements;

break;

}

2.3.10.Try、Catch和Finally(建议使用)

关键词trycatchfinally和后面的括号之间加一个空格

示例:

try{

statements;

}catch(ExceptionClasse){

statements;

}

try{

statements;

}catch(ExceptionClasse){

statements;

}finally{

statements;

}

2.3.11.表达式排版规则

2.3.11.1.空格(必须使用)

2.左括号和后一个字符之间不应该出现空格,同样,右括号和前一个字符之间也不应该出现空格

3.用空格分隔所有的二元运算符(除了".")和操作数

示例:

a=(a+b)/(c*d);

2.3.11.2.一元操作符(必须使用)

4.一元操作符和操作数之间不加空格,一元操作符包括负号(-)、自增(++)、自减(--)。

示例:

i++;

J--;

5.当三元运算符“?

:

”的“?

”之前出现包含二元运算符的表达式时,给表达式添加一对圆括号

示例:

(x>=0)?

x:

-x;

2.3.11.3.强制转型(建议使用)

强制转型后要跟一个空格

示例:

myMethod((byte)aNum,(Object)x);

myMethod((int)(cp+5),((int)(i+3))+1);

2.3.11.4.单行(必须使用)

单行不应超过130个字符,断行的原则是:

6.在逗号后。

7.在操作符前。

8.在较高的层次断行。

9.所断的行之间要对齐。

10.第一次断行比上一行缩进4个字符。

示例:

someMethod(longExpression1,longExpression2,longExpression3,

longExpression4,longExpression5);

var=someMethod1(longExpression1,

someMethod2(longExpression2,

longExpression3));

longName1=longName2*(longName3+longName4-longName5)

+4*longname6;//更好一些

longName1=longName2*(longName3+longName4

-longName5)+4*longname6;//避免这样使用

alpha=(aLongBooleanExpression)?

beta:

gamma;

alpha=(aLongBooleanExpression)?

beta

:

gamma;

alpha=(aLongBooleanExpression)

?

beta

:

gamma;

2.4.注释规则

2.4.1.原则(必须使用)

11.对代码进行注释,是在代码可读性的基础上,使用自然语言对代码所表达的意思进行阐述。

并不是说代码可以写的很烂,注释写的很详细,这不是好的方式。

如果代码可读性很好,命名表意丰富,清晰,一般不需要特别多的注释。

对于类,主要着重要描述它的职责,即它能干什么,对于复杂的算法实现,应该使用内部实现注释,说明算法的主要思路,对于长方法,要让阅读代码的人比较容易的明白方法实现的主要流程。

反之,对于一看就懂的方法,则不需要进行注释,比如get/set方法。

12.代码应该和注释保持同步,如果代码和注释不同步,则阅读代码的人会想,“到底是代码准确,还是注释准确啊”,换谁都会糊涂。

13.方法必须有注释,且必须简洁易懂。

太简单的方法就不要注释了,比如上面提到的get/set方法。

14.每次增量的修改都必须写明注释:

谁、在什么时间、因为什么原因添加;

15.一个类注释行数需要到达代码行数的30%;

2.4.2.JavaDoc

2.4.2.1.创建文件(必须使用)

使用JavaDoc对功能、版本信息、日期、作者和版权声明

示例:

/**

*

Copyright:

Copyright(c)2014

*

Company:

wubanf

*/

2.4.2.2.类方法(必须使用)

用中文写出每个参数和返回值的含义

示例:

/**

*@paramCustID:

客户ID

*@return返回用户的单位信息

*@throwsException

*/

2.4.2.3.单行(必须使用)

单行注释位于所描述内容之前

单行注释之前留一行空行

单行注释和所描述代码具有一样的缩进格式

注释不能在一行写完时,就采用块注释

示例:

//这里是单行注释

2.4.2.4.块注释规则(必须使用)

16.方法内部的块注释位于所描述内容之前

17.块注释前留一行空行

18.块注释和所描述代码具有一样的缩进格式。

示例:

/*

*这里是块注释

*/

2.4.2.5.尾端注释规则(建议使用)

19.对变量或常量的简短注释在代码右端

20.代码和尾端注释之间留有足够多的空白

21.多个短注释出现于大段代码中时,注释要有相同的缩进

示例:

Stringname=null;//这里是尾端注释

2.4.3.文档化的部分

2.4.3.1.参数(必须使用)

22.参数类型

23.用于做什么

24.一些相关约束、限制或者是前置条件(preconditions)

25.复杂的情况下,还需包含一个示例以助说明。

2.4.3.2.变量(必须使用)

26.描述说明

27.复杂的情况下,需要给出一个使用例子

示例:

/**

*Theuniqueidentifierofcurrentrecord.

*ThisvariableisalsotheprimarykeyfortheEnterpriseBean.

**/

publicStringlogID;

2.4.3.3.接口(必须使用)

a.接口说明(包括:

作者、时间、类功能、目的等)

b.该接口应如何使用

2.4.3.4.方法内部注释(建议使用)

c.方法内部变量说明

d.复杂的逻辑部分的代码注释

2.4.3.5.方法(必须使用)

e.该方法做什么以及为什么这样做

f.该方法的传入参数说明

g.该方法的返回说明

h.已知的bugs

i.该方法所抛出的异常说明

j.重载方法必须使用@Override(避免父类方法调整时导致重载失效,明确方法的层次关系)

k.无错误无警告(不需要关心的warning用@SuppressWarnings标注一下)

l.该方法中代码更新的历史记录

m.该方法如何调用

n.前置条件(pre-condition)/后置条件(post-condition)说明

示例:

/**

*GivenaPrimaryKey,findsanEJBeanswiththePrimaryKey

*(.si-tech.ejb.demo.LogPK).

*Returns

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1