Java编码规范.docx
- 文档编号:19651778
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:19
- 大小:53.74KB
Java编码规范.docx
《Java编码规范.docx》由会员分享,可在线阅读,更多相关《Java编码规范.docx(19页珍藏版)》请在冰豆网上搜索。
Java编码规范
文件名称:
Java编码规范
生效日期:
2010年6月18日
1基本原则4
2命名规则(NamingConventions)4
2.1项目(Project)(视不同的开发工具)4
2.2包(Package)4
2.3类(Class)5
2.4属性(Property)5
2.5方法(Method)5
2.6常量/宏(Constant&Macro)6
2.7变量(Variable)7
3代码格式(LanguageStatement)8
3.1文件/文件组织(FileOrganization)8
3.2包&包含(PackageandImport)8
3.3行长度/页宽(LineLength)9
3.4换行(WrappingLines)9
3.5空白(WhiteSpace)9
3.6缩进(Indent)10
3.7括号(Bracket)11
3.8异常&返回(Exception&ReturnCode)11
3.9注释(Comments)12
3.9.1块注释12
3.9.2单行注释13
3.9.3末尾注释13
3.9.4行尾注释13
3.9.5其他注释规则13
3.10声明16
3.11语句16
修订记录RevisionRecord
日期Date
修订版Ver
描述RevisionRecord
作者Author
2007-9-27
RV1.1
刘皓
1基本原则
基本原则为编程时应该坚持的指导思想。
【原则1】保持代码的简明清晰,易读易维护,避免过分的编程技巧。
【原则2】所有的代码尽量遵循SUNJAVA标准。
【原则3】编程时首先达到正确性,其次考虑效率。
【原则4】避免或少用全局变量。
【原则5】尽可能重用、修正老的代码。
2命名规则(NamingConventions)
2.1项目(Project)(视不同的开发工具)
规则
说明
举例
<工程代号>
●单project工程中,project名即为工程代号。
●首字母大写,其余字母小写;如果是缩写,需要全部为大写。
ACEX
<工程代号>_
●多project工程中,project名称由工程代号和project组成。
●每个单词首字母大写,其余字母小写;如果是缩写,需要全部为大写。
ACEX_Portal
2.2包(Package)
原则上,所有的包名都必须以com.sunboon开头,系统必须提供完整的包类型命名规则,如果是各种不同的项目需要,可以使用不同的项目包名,如:
gov.chinapost
规则
说明
举例
●单package的project中,package名即为project名,首写字母大写。
com.sunboon
●多package的project中,package名体现包功能。
●包名的所有字母都是小写字母
com.sunboon.system.monitor
2.3类(Class)
规则
说明
举例
<标识符>
●class名称选取有意义的代表该class实际含义的名词或名词词组,要求为英文单词,不可以取汉语拼音。
●每个单词首字母大写,其余字母小写。
Debugger
FileProcessor
Exception名
说明
举例
<标识符>+Exception
●Exception的名字由有意义的标识符和关键字Exception组成。
●每个单词首字母大写,其余字母小写。
SQLException
2.4接口(Interface)
规则
说明
举例
<标识符>
●接口的名称选取有意义的代表该Interface实际含义的名词或名词词组,要求为英文单词,不可以使用汉语拼音。
●接口的首字母为大写的I,以及接口单词的首字母为大写,其余字母小写。
IQuery
IMessageListener
2.5属性(Property)
规则
说明
举例
<标识符>
●property名称选取有意义的代表该property实际含义的名词或名词词组,不可以取汉语拼音。
●第一个单词的所有字母均小写,以后每个单词的首字母大写,其余字母均小写。
password
fileName
2.6方法(Method)
规则
说明
举例
<标识符>
●method名称选取有意义的代表该method实际含义的动词或动宾词组。
●第一个单词的所有字母均小写,以后每个单词的首字母大写,其余字母均小写。
startServices
特殊method名称
说明
举例
●构造函数与class同名。
●字母大小写同class名的字母的大小写。
Thread
is+<标识符>
●用于判断一个标志位的method。
●返回一个布尔值。
isAlive
can+<标识符>
●用于判断能否执行一个动作。
●返回一个布尔值。
canSleep
get+<标识符>
●用于取得一个属性或一个值。
getProperty
set+<标识符>
●用于设置一个属性或一个值。
setProperty
2.7常量/宏(Constant&Macro)
规则
说明
举例
●project的constant和macro名称由project名和有意义的一个或多个名词组成。
●所有字母均大写,每个单词之间由下划线连接。
●在单独的class中声明。
RAINBOW_VERSION
●package的constant和macro名称由package名和有意义的一个或多个名词组成。
●所有字母均大写,每个单词之间由下划线连接。
●在单独的class中声明。
AUCTION_VERSION
<标识符>
●局部的constant和macro名称选取有意义的一个或多个名词。
●所有字母均大写,每个单词之间由下划线连接。
●在当前class中声明。
MAX_NUMBER
2.8Jsp命名
新增页面在模块名后面加Add例:
userAdd.jsp
修改页面在模块名后面加Update例:
userUpdate.jsp
列表页面在模块名后面加List例:
userList.jsp
2.9变量(Variable)
规则
说明
举例
●Project的variable名称由project名和有意义的名词或名词词组组成。
●project名部分字母大小写同project名;标识符部分第一个单词的所有字母均小写,以后每个单词的首字母大写,其余字母均小写。
Rainbow_userNumber
●Package的variable名称由package名和有意义的名词或名词词组组成。
●Package名部分字母大小写同package名;标识符第一个单词的所有字母均小写,以后每个单词的首字母大写,其余字母均小写。
AuctionService_currentTime
<标识符>
●局部的variable名称选取有意义的名词或名词词组组成。
●第一个单词的所有字母均小写,以后每个单词的首字母大写,其余字母均小写。
encryptedPassword
特殊Variable名称
说明
举例
<单个小写字母>
●诸如循环变量、临时变量、交换变量等,采用此类命名方法。
●在使用时声明。
i
j
<单个小写字母>+<编号>
●仅仅在需要使用上述命名规则时,发生重名情况下使用。
●在使用时声明。
c1
c2
注:
●如果在实际应用中整个名字太长,可以考虑采用适当的缩写方式。
例如:
去掉元音字母,保留辅音字母:
用msg代替message,用mgr代替manager
截取字母的一部分:
用prop代替properties,用max代替maximum
●对于一些固定的缩写(如:
SQL等),其字母大小写规则按照其固定规则书写。
3代码格式(LanguageStatement)
3.1文件/文件组织(FileOrganization)
在项目主目录、主要的包目录等其他需要的地方建立README文件,作为特定目录下所含内容的首文件,可以记录各个文件功能、文件之间的关系、程序的执行命令、运行环境等信息。
一个Java源文件总行不要超过1500行。
一个方法总行数不要超过200行
代码应该用unix的格式,而不是windows的(比如:
回车变成回车+换行),可以使用Ultraedit进行编码转换。
在使用不同的操作系统时如Windows下开发的代码文件在Unix上使用时会出现编码问题,如果你使用UltrEdit作为你的Java源代码编辑器的话,你可以通过如下操作来进行文件编码转换,方法是使用UltrEdit中菜单”文件”✍”转换”✍”Dos转Unix”。
所有JAVA源文件的字符编码都应该采用UTF-8编码,禁止在JAVA源文件中使用例如:
ISO8859_1,GBK等格式的编码。
3.2包&包含(PackageandImport)
文件的头部作出文件的描述,详细使用见“注释”
文件注释后用一空行隔开
定义包名称如
.core
包定义后用一空行隔开
定义包含的文件如
正式发布的类文件中所引用的类应该精确,不应该出现通配符,例如:
java.util.*;
3.3行长度/页宽(LineLength)
尽量避免一行的长度超过80个字符。
注意:
用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。
3.4换行(WrappingLines)
当一个表达式无法容纳在一行内时,可以依据如下一般规则断开:
1.在一个逗号后面断开
2.在一个操作符前面断开
3.新的一行应该与上一行同一级别表达式的开头处对齐
4.如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进4个空格。
例如:
publicvoidsomeMethod(longExpression1,longExpression2,longExpression3,
longExpression4,longExpression5);
if((condition1&&condition2)
||(condition3&&condition4)
||!
(condition5&&condition6)){
doSomethingAboutIt();
}
3.5空白(WhiteSpace)
空行:
●每一个程序段完成之后必须留有空行,以便阅读。
空格:
●赋值语句的等号两旁均要留有一个空格
i=j;
●空白应该位于参数列表中逗号的后面
●所有的二元运算符,除了".",应该使用空格将之与操作数分开。
一元操作符和操作数之间不应该加空格,比如:
负号("-")、自增("++")和自减("--")
例如:
a+=c+d;
a=(a+b)/(c*d);
while(d++=s++){
n++;
}
printSize("sizeis"+foo+"\n");
●for语句中的表达式应该被空格分开
例如:
for(expr1;expr2;expr3)
●强制转型后应该跟一个空格
例如:
myMethod((byte)aNum,(Object)x);
myMethod((int)(cp+5),((int)(i+3))+1);
3.6缩进(Indent)
程序采用分层缩进原则。
代码的缩进标准是4个空格(不是TAB),即每一层比上一层缩进4个空格。
不要在源文件中保存Tab字符。
在使用不同的源代码管理工具时Tab字符将因为用户设置的不同而扩展为不同的宽度,如果你使用UltrEdit作为你的Java源代码编辑器的话,你可以通过如下操作来禁止保存Tab字符,方法是通过UltrEdit中先设定Tab使用的长度室4个空格,然后用Format|TabstoSpaces菜单将Tab转换为空格。
3.7括号(Bracket)
Java采用花括号来标记符合语句。
每一对括号的左半个括号写在产生该括号的语句的末尾;右半个括号写在该复合语句的下一行的行首,并与产生该括号的语句在行首对齐。
例如:
publicstaticvoidmain(Stringargs[]){
if(true){
}else{
}
“OnlyOneLine”);
if(longcondition……………………………………………………){
“MustUse{}”);
}
}
3.8异常&返回(Exception&ReturnCode)
在Java程序中,推荐使用Exception处理各类异常,而不是使用ReturnCode。
除诸如函数求值之类的必须返回一个值的应用,应该尽量避免使用ReturnCode。
推荐使用自定义Exception,用来补充Java的Exception类。
每个工程,都应该整理出共通的Exception在最外层予以统一处理。
自定义的Exception视具体的应用情况继承不同的Exception,如:
EOFException,IOException等。
不推荐直接继承Exception类。
由于Exception机制占用系统资源较高,并且会危害编译器的分析性能,所以禁止滥用Exception。
例如:
MyExceptione=newMyException();
throw(e);
try{
}catch(DatabaseExceptione){
}finally{
}
3.9注释(Comments)
Java可以有4种实现注释的风格:
块(block)、单行(single-line)、末尾(trailing)和行尾(end-of-line)。
3.9.1块注释
通常用于提供对文件,数据结构和算法及其他说明性的描述。
块注释被置于每个文件的开始处以及每个方法之前。
它们也可以被用于其他地方,比如方法内部。
在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。
用来描述Java的类、接口、构造器,方法,以及字段的注释请使用JavaDoc定义的文档注释,即:
/**
*/
3.9.2单行注释
一般用来注释定义声明或简单的流程控制语句。
两行以内的注释以“//”开头,后跟注释内容。
两行以上的注释以“/*”和“*/”成对括起。
单行注释之前应该有一个空行。
如果一行不能完成,使用两行,每个”//”后留一空格如:
//commentline1
//commentline2
两行以上的注释用”/*”*/”成对括号
3.9.3末尾注释
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。
若有多个短注释出现于大段代码中,它们应该具有相同的缩进。
3.9.4行尾注释
用户注释整段已完成的编码
//if(condition){
//}
3.9.5其他注释规则
每个文件的头部注释(放在文件的开始行)
/**
*CopyrightBy2010SunBoonCo.Ltd.
*Allrightreserved.
*/
这里的描述指的是该文件所属公司版权信息的描述
每个Class的注释(放在class定义的上一行)
/**
*@authorSean
*@since2010-9-28
*@description:
*类描述/ClassDescription:
用详细的语句描述该class实现的功能
*实现中用到算法
*具体的使用环境及其他需要说明的地方。
*可以使用
等JavaDoc定义的类html的文档结构化语句
*/
Method的头部注释
Method的头部注释采用javadoc能够识别的格式。
具体格式如下:
/**
*功能/function:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*
*流程描述/steps:
*步骤/steps:
1、dostep
2、dostep
3、xxxxxxxxx
*@param参数1参数1类型参数1说明
*@param参数2参数2类型参数2说明
*@return返回值
*@exception异常1,异常2...
*
*修改记录/revision:
日期:
修改人描述:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
*/
method体对应头部注释如下:
privatestaticvoidmethodName(){
//1、dostep1
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
//2、dostep2
xxxxxxxxxxxxxxxxxxxxxx//此处写语句的注释
//此处写程序段的注释
xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//startmodify,XXX,1999-6-1
//此处写修改内容注释
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
//endmodify,XXX,1999-6-1
xxxxxxxxxxxxxx
}
注:
考虑到目前大部分成员的语言习惯性,注释请使用中文。
以能够清楚描述系统逻辑结构为准,原则上注释行不少于源程序的1/3。
以下内容必须有注释:
●ProjectHead
●PackageHead
●ClassHead
●PropertyDeclaration
●MethodDeclaration
●MethodHead
●GlobalConstant&Macro
●ImportantVariable
●ComplexAlgorithm
3.10声明
一行一个声明,这样便于书写注释,条理清晰
例如:
intlevel;//indentationlevel
intsize;//sizeoftable
不要将不同类型变量的声明放在同一行,例如:
intfoo,fooarray[];//WRONG!
注意:
上面的例子中,在类型和标识符之间放了一个空格,另一种被允许的替代方式是使用制表符:
intlevel;//indentationlevel
intsize;//sizeoftable
ObjectcurrentEntry;//currentlyselectedtableentry
3.11语句
●每行最多有一条语句
例如:
i++;(正确)
j=i+1;(正确)
i++;j=i+1;(错误)
●if,if-else,ifelse-ifelse语句
if-else语句应该具有如下格式:
if(condition){
statements;
}
if(condition){
statements;
}else{
statements;
}
if(condition){
statements;
}elseif(condition){
statements;
}else{
statements;
}
注意:
if语句总是用"{"和"}"括起来,避免使用如下容易引起错误的格式:
if(condition)//AVOID!
THISOMITSTHEBRACES{}!
statement;
●try-catch语句
一个try-catch语句应该具有如下格式:
try{
statements;
}catch(ExceptionClasse){
statements;
}
一个try-catch语句后面也可能跟着一个finally语句,不论try代码块是否顺利执行完,它都会被执行。
try{
statements;
}catch(ExceptionClasse){
statements;
}finally{
statements;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 编码 规范