Java编码规范之声明和空白,空格

来源:互联网 发布:js中on和bind的区别 编辑:程序博客网 时间:2024/06/08 13:45
 

6 声明(Declarations)

 

6.1 每行声明变量的数量(Number Per Line)

推荐一行一个声明,因为这样以利于写注释。亦即,

int level;  // indentation level

int size;   // size of table

要优于,

int level, size;

不要将不同类型变量的声明放在同一行,例如:

int foo, fooarray[]; //WRONG!

注意:上面的例子中,在类型和标识符之间放了一个空格,另一种被允许的替代方式是使用制表符:

int        level;          // indentation level

int        size;           // size of table

Object     currentEntry;   // currently selected table entry

 

6.2 初始化(Initialization)

尽量在声明局部变量的同时初始化。唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算。

 

6.3 布局(Placement)

只在代码块的开始处声明变量。(一个块是指任何被包含在大括号"{"和"}"中间的代码。)不要在首次用到该变量时才声明之。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可

移植性。

void myMethod() {

int int1 = 0;           // beginning of method block

 

if (condition) {

int int2 = 0;       // beginning of "if" block

...

}

}

该规则的一个例外是for循环的索引变量

for (int i = 0; i < maxLoops; i++) { ... }

 

避免声明的局部变量覆盖上一级声明的变量。例如,不要在内部代码块中声明相同的变量名:

int count;

...

myMethod() {

if (condition) {

int count = 0;     // AVOID!

...

}

...

}

6.4 类和接口的声明(Class and Interface Declarations)

当编写类和接口是,应该遵守以下格式规则:

- 在方法名与其参数列表之前的左括号"("间不要有空格- 左大括号"{"位于声明语句同行的末尾- 右大括号"}"另起一行,与相应的声明语句对齐,除非是一个空语句,"}"应紧跟在"{"之后

class Sample extends Object {

int ivar1;

int ivar2;

 

Sample(int i, int j) {

ivar1 = i;

ivar2 = j;

}

 

int emptyMethod() {}

...

}

- 方法与方法之间以空行分隔

 

 

8 空白(White Space)

 

8.1 空行(Blank Lines)

 

空行将逻辑相关的代码段分隔开,以提高可读性。

下列情况应该总是使用两个空行:

- 一个源文件的两个片段(section)之间

- 类声明和接口声明之间

 

下列情况应该总是使用一个空行:

- 两个方法之间

- 方法内的局部变量和方法的第一条语句之间

- 块注释(参见"5.1.1")或单行注释(参见"5.1.2")之前

- 一个方法内的两个逻辑段之间,用以提高可读性

8.2 空格(Blank Spaces)

下列情况应该使用空格:

- 一个紧跟着括号的关键字应该被空格分开,例如:

while (true) {

...

}

注意:空格不应该置于方法名与其左括号之间。这将有助于区分关键字和方法调用。

- 空白应该位于参数列表中逗号的后面(下面的例子中有)

- 所有的二元运算符,除了".",应该使用空格将之与操作数分开。

一元操作符和操作数之间不因该加空格,比如:负号("-")、自增("++")和自减("--")。例如:

a += c + d;

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

while (d++ = s++) {

n++;

}

printSize("size is " + foo + "\n");

- for语句中的表达式应该被空格分开,例如:

for (expr1; expr2; expr3)

- 强制转型后应该跟一个空格,例如:

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

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