JAVA编程规范修订.docx
- 文档编号:29492475
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:14
- 大小:20.72KB
JAVA编程规范修订.docx
《JAVA编程规范修订.docx》由会员分享,可在线阅读,更多相关《JAVA编程规范修订.docx(14页珍藏版)》请在冰豆网上搜索。
JAVA编程规范修订
JAVA编程规范
1.1 Java文件名与文件组织结构
1.一个java源文件不应该超过2000行。
2.在Java源文件中应该包含一个单一的公共类(class)或接口(interface),这个公共类或公共接口,应该是这个源文件的第一个类或接口。
3.一个Java源文件一般由下面的顺序构成:
(1)文件注释头
(2)包名(package)
(3)引入(import)声明
(4)类(class)或接口(interface)的声明部分
1.2 Java文件注释头
Java类文件注释头是用来描述该类功能及其特点,以及相关开发信息的,如该类的关联类(通常情况下不描述Java系统核心类如java.util.Vector,java.lang.Thread等)、开发公司或单位、版权、作者、代码审定人该类所支持的JDK版本、该类版本、开发日期、最后更改日期、修改人、复审人等信息,下面就是一个Java类文件注释头:
/*****************************************************************
*该类功能及其特点的描述(例如:
该类是用来……)
*
*该类未被编译测试过。
*
*@see(与该类相关联的类):
(AnatherClass.java)
*
*
*开发公司或单位:
××软件有限公司研发中心
*
*版权:
本文件版权归属××公司研发中心
*
*
*@author(作者):
必胜利
*
*@since(该文件所支持的JDK版本):
Jdk1.3或JDK1.4
*
*@version(版本):
1.0
*
*@date(开发日期):
1999-01-29
*
*最后更改日期:
2003-05-16
*
*修改人:
必胜利
*
*复审人:
张三 李四 王五
*********************************************************************/
1.3 包的声明与引用
包的基本命名规则:
规则一:
包名应该是独一无二不可重复的
规则二:
包名通常情况下都应该是小写ASCII字母
规则三:
包名一般是公司域名的倒序,经常用到得域名后缀有cn,com,edu,gov,mil,net,org等(如:
com.sybase.*)
规则四:
域名之前的国家名称可以由一到两个英文字母做前缀用来表示国家名称,这个规则可以参考ISO标准3166(注:
这种声明方式较少)
规则五:
域名后面的部分可以根据习惯命名(如*.io.*,*.util.*等)
例如:
— com.sybase.ep
— com.sun.eng
— com.apple.quicktime.v2
— edu.cmu.cs.bovik.cheese
— org.anserwv.app.bloodhound
1.4 类与接口的声明
类与接口的声明规则如表1-2所示。
表1-2 类与接口的声明
序 号
类与接口的声明
声明规则
1
类与接口文件头的注释应采用 (/**...*/)的注释格式
具体的书写格式及其内容,参考1.2节
2
类与接口的声明
类与接口的名字一般由大写字母开头,其他字母都小写的单词组成,并且类的名字应尽量具有清晰的实际意义
3
类与接口实现部分的注释应采用(/*...*/)的注释格式
这种注释方式一般适用于类与接口中较大区域的注释,而对类与接口文件头的注释,则不适用
4
类的变量的声明
首先应该声明公共(public)类型的变量,再声明保护(protected)类型的变量,最后声明私有(private)类型的变量
5
实例(instance)变量的声明
与类的变量的声明顺序一样,首先应该声明公共(public)类型的变量,再声明保护(protected)类型的变量,最后声明私有(private)类型的变量
6
构造器(constructor)的声明
构造器一般作为类的第一个方法声明,你可以在构造器的声明体中加入一些预处理代码
7
方法(method)的声明
方法的声明最好采用以功能性分组的方式进行排列,这比采用可访问性分组的方式排列更为友好,例如:
可以将一个私有方法放在两个公共方法之间,这样做是为了把功能性相近的方法排列在一个组中。
这样做的目的是为了使代码具有更强的可读性与易解性
8
析构器(destructor)finalize()方法
其实Java程序设计中,本来没有析构器的概念,我们这里只是形象地称finalize()方法为析构器。
关于finalize()方法的作用与意义,你将在本书的下面章节中得到详解
1.5 Java源文件编排格式
行间缩进,以四个空格键(space)为单位。
代码行长度应该小于80个字符。
折行规则:
(1)在逗号后折行。
(2)在运算符(operator)前折行。
(3)高层折行优于低层折行(优先考虑折断高层语句而维护低层语句的完整性)。
(4)折下的代码行应该与其同等级的代码行左对齐。
(5)如果上面的法则令代码行右侧距页边的距离,差距较大并且混乱,我们可以在适当行采用Tab键(8空格键)处理。
1.6 程序注释
1.代码本身应该是自注释的。
2.在重点同时难以理解的地方另加注释。
方法体内的注释应该与其所描述的代码位于同一个层次上。
在一个块注释之前一般有一空白行用于做区分代码与注释的边界。
1.7 变量的声明初始化与放置
1.7.1 变量声明
1.在一般情况下我们建议每一行代码,只声明一个变量;
2.如果变量名称较短并且又是同一数据类型同一结构类型,并且没有给变量初始化则可以在同一行声明;
1.7.2 变量初始化
尽量在变量声明的地方初始化,如果变量的初始化与有待于计算或处理后的值有关,则我们可以在取得这个值后对变量做初始化。
1.7.3 变量放置
1.尽量把变量声明代码放置在一个代码块的开始处,这里所说的代码块是用{}括起来的代码段,不要等到在使用变量的时候再声明它,这样会降低代码的可读性与便携性(portability)。
2.这个规则的一个例外就是在Java循环语句中可以直接声明变量;
3.避免低层声明与高层声明重复。
1.8 Java程序语句编写规则
1.8.1 简单语句
每行只能有一条语句,即只能有一个分号。
1.8.2 复合语句
复合语句又可分为:
分支语句、循环语句与异常处理语句。
分支语句
分支语句又可以分为:
if-else(或ifelse-ifelse)语句与switch语句。
— if-else(或ifelse-ifelse)语句。
对于if或else后的语句块,即使为单行语句,也应该通过{}将其闭合。
书写格式如下:
……
if(condition){
statements;
}
…
if(condition){
statements;
}else{
statements;
}
…
if(condition){
statements;
}elseif(condition){
statements;
}else{
statements;
}
……
— switch语句。
每一个case语句块都通过调用break语句结束,必须有default分支且default一定是最后一个分支。
格式如下:
……
switch(condition){
case1:
/*我的注释*/
statements;
break;
case2:
statements;
break;
case3:
statements;
break;
default:
statements;
break;
}
……
循环语句
循环语句按照其语法特点又可以分为:
for循环语句、while循环语句与do-while循环语句。
— for循环语句。
一般情况下for循环语句有下面的格式:
……
for(initialization;condition;update){
statements;
}
……
— while循环语句。
while循环是经常被采用的一种循环方式,其标准语句书写格式如下所示:
while(condition){
statements;
}
— do-while语句。
do{
statements;
}while(condition);
异常处理(try-catch)语句
异常处理语句按结构可以分为两种:
try-catch结构与try-catch-finally结构。
— try-catch结构异常处理。
try{
statements;
}catch(ExceptionClasse){
statements;
}
— try-catch-finally结构异常处理。
try{
statements;
}catch(ExceptionClasse){
statements;
}finally{
statements;
}
1.9 空格与空行的应用规则
1.9.1 空格的应用规则
(1)空格一般应用于关键字与括号之间,例如下面的语句:
while(true){
...
}
不过需要注意的是方法名称与左括号之间不应该用空格分开。
这样的好处是可以清楚地区分方法调用的关键字。
(2)一般在参数列表中的逗号后面插入空格,例如下面的语句:
myObject.myMethod(arg1,arg2,…,argn);
(3)数学算式的操作数与运算符之间应该添加空格(二进制运算与一元运算除外),如下所示的语句:
……
x=x>>3; //二进制运算
…
a+=c+d;
a=(a+b)/(c*d);
…
while(d++=s++){
n++; //一元运算
}
printSize("sizeis"+foo+"\n");
……
(4)for语句中的表达式应该用逗号分开,如下所示的语句:
for(expr1;expr2;expr3);
(5)强制类型转换语句中的强制类型的右括号与表达式之间应该用空格隔开,例如下面的语句:
myMethod((byte)aNum,(Object)x);
myMethod((int)(cp+5),((int)(i+3))+1);
1.9.2 空行的应用规则
在逻辑上相关联的代码块之间合理地插入空行可以增强程序代码的可读性,其规则有二:
(1)在同一源文件的两个代码片断之间,或者在同一源文件的类与接口的定义之间可以插入两行空白行;
(2)在下面的情形下需要插入一行空白行:
—在两个方法之间。
—在方法内部的本地变量与第一个语句之间。
—在块注释与单行注释之前。
—在方法内部的逻辑片断之间。
1.10 方法、变量与常量的命名规则
1.10.1 方法的命名规则
方法一般来说都是动词,第一个字母应该小写,在多个单词混合的情况下,第一个单词后的所有单词的第一个字母大写,其余字母小写。
在方法的声明部分,通常要提供对方法功能的描述,以及方法中返回值与参数的说明,例如下面的代码:
/**
*显示系统信息方法
*@parammessage系统信息参数
*@returnmessage返回系统信息
*/
publicStringshowMessage(Stringmessage){
…
//statements;
…
returnmessage;
}
如果该方法在软件产品的不断升级中已经不被建议使用了,可以通过在方法声明注释部分添加关键字@deprecated实现。
1.10.2 变量的命名规则
变量的命名规则是,除了变量(variable),所有对象的实例(instance),类(class)与类的常量(constant)的第一个字母应该小写,在多个单词混合的情况下第一个单词后的所有单词的第一个字母大写,其余字母小写的规则之外。
变量的第一个字母即使系统允许,也不要为_或者$。
变量名字因该紧凑而有意义。
变量的名字应该是易记忆、易于理解的,即使间隔较长的时间也可以依其名而知其意。
另外单字符的变量名应该尽量避免,除非循环变量。
1.10.3 常量的命名规则
Java中的常量一般采用大写字母单词命名,单词与单词之间用下划线(_)加以分割,这符合ANSI的常量命名规则,如下所示的代码:
staticfinalintMIN_WIDTH=14;
staticfinalintMAX_WIDTH=1000;
staticfinalintGET_THE_MEMORY=128;
1.11 Java编程实践
通过四个方面来讲解Java程序设计风格与格式规则,这是编写大师级代码的基础。
1.11.1 访问实例与类中变量的规则
不要将类中的变量声明为公共类型(public),应当通过public类型方法去访问相关变量。
1.11.2 引用类中的静态变量与方法的规则
当你试图在你的代码中引用类的静态方法或静态成员变量时,不要通过该类的实例对象引用它们,尽管这样是允许的。
你应该通过类来引用它们,如下所示的代码:
publicstaticclassMethod();
MyClass.classMethod(); //正确
myObject.classMethod(); //不正确(应该避免)
1.11.3 变量赋值规则
尽量避免在一个单行语句中将一个变量赋多个值,这样将使代码变得艰涩、难懂,例如下面的代码:
userName=user1.name='jerrylin';//这种赋值方式应尽量避免
尽量避免对一元表达式赋值,例如下面的代码在Java中是绝对不允许的:
if(i++=m++){
...
}
当然可以修改为下面的方式,便可以逃避语法错误,不过这是不被推荐使用的:
if((c++=d++)!
=0){
...
}
尽量避免嵌套赋值,这样会浪费编译器较多的时间,例如下面的代码:
d=(a=b+c)+r;
上面的赋值方式应修改为下面的方式:
a=b+c;
d=a+r;
1.11.4 综合规则
1.括号规则
应尽量使用括号()来界定表达式的结合顺序,避免由于运算符优先级的问题而导致非主观意图错误,即使你对运算符优先级比较了解而且代码看起来也比较清晰,但是其他程序员看这段代码未必像你一样清楚,例如下面的代码:
if(i==j&&m==n) //应尽量避免
if((i==j)&&(m==n))//正确
2.返回值规则
应尽量使程序结构与你的意图匹配,例如:
if(isTrue){
returntrue;
}else{
returnfalse;
}
上面的程序有些“受累不讨好”的感觉,应该修改为:
returnisTrue;
相似的有,
if(condition){
returnx;
}
returny;
应该修改为:
return(condition?
x:
y);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 编程 规范 修订