本文为《code conventions-150003》(JAVA代码规范)笔记。
文件组织
1、超过2000行代码的源文件将会比较难以阅读,应该避免。
2、每个Java源文件都包含单一的公共类或接口。如果私有类和接口与一个公共类有联系,可以把它们与这个公共类放在同一个源文件中。公共类必须是文件中的第一个类或接口。
3、JAVA源文件内容应该遵循以下顺序:
import java.applet.Applet; import java.awt.*; import java.net.*;
/* *Classname * *Version info * *Copyright notice */
package java.awt; import java.awt.peer.CanvasPeer;
| 类/接口声明的各部分 | 备注 | |
| 1 | 类/接口的文档注释 | 该注释所需包含的信息可以参见下面的文档注释 |
| 2 | 类/接口的声明 | |
| 3 | 类/接口的实现注释(/*...*/),如果有必要的话 | 该注释应该包含所有与类或接口有关的信息,而这些信息又不适合作文档注释。 |
| 4 | 类(静态)变量 | 首先是类的公有(public)变量,然后是保护(protected)变量,之后是私有(private)变量。 |
| 5 | 实例变量 | 首先是公有的(public),接着是保护的(protected),之后是私有的(private)。 |
| 6 | 构造方法 | |
| 7 | 方法 | 这些方法应该按功能,而非作用域或访问权限来分组。例如,一个私有的类方法可以在两个公有的实例方法之间,其目的是为了更利于代码的阅读与理解。 |
function(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = function1(longExpression1,
function2(longExpression2,
longExpression3));longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; // PREFER
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; // AVOID 下面是两个方法声明的缩进例子。第一个例子是常规情况。而第二个例子,如果使用常规的缩进方式,它会使第二行和第三行的代码太过于偏右,所以以缩进8个空格的方式代替。//常规缩进
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
//以8个空格来代替,以避免缩进太严重
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
} if语句的换行通常应该使用8个空格的规则,因为常规的缩进(使用4个空格)会使语句体比较难以阅读。例如://请勿使用这种缩进
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) { //BAD WRAPS
doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS
}
//使用这种缩进来代替
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
//或这种缩进
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}alpha = (aLongBooleanExpression) ? beta : gamma;
alpha = (aLongBooleanExpression) ? beta
: gamma;
alpha = (aLongBooleanExpression)
? beta
: gamma;/* * Here is a block comment. */
/* * Here is a block comment with some very special * formatting that I want indent(1) to ignore. * * one * two * three */注意:如果你不使用indent(1),你就不必要在你的代码中使用/*-,或为其他人可能对你的代码运行indent(1)作出其他的让步。
if (condition) {
/* Handle the condition. */
...
}if (a == 2) {
return TRUE; /* special case */
} else {
return isprime(a); /* works only for odd a */
}if (foo > 1) {
// Do a double-flip.
...
}
else
return false; // Explain why here.
//if (bar > 1) {
//
// // Do a triple-flip.
// ...
//}
//else
// return false;
/**
* The Example class provides ...
*/
class Example { ...原文:http://blog.csdn.net/maosidiaoxian/article/details/20578447