? 建议
方法体对应注释如下:
private static void methodName() { // 1、do step 1 doStep1(); // 2、do step 2 doStep2(); // start modify, XXX, 1999-6-1 //此处写修改内容注释 doBusiness(); // end modify, XXX, 1999-6-1 doOthers(); } 此处写修改记录注释,修改记录两端要用start modify 和end modify另加修改人名和修改日期括起,并需要加注修改内容。
5. 语句规范
引用静态成员变量时使用类名引用, 使用非静态成员变量时应该使用this引用。
5.1. 简单语句
? 规则
1) 每行只包含一条语句
示例:
argv++; // 正确 argc--; // 正确 argv++; argc--; // 不正确 5.2. 复合语句
复合语句是包含在大括号中的语句序列,如\语句 }\。
16
? 规则
1) 包括在其中的语句应缩进一个层次。
2) 左大括号\应位于复合语句起始行的行尾;右大括号\应另起一行并与复合语句首行对齐。
5.3. 返回语句
? 规则
带有表达式的return语句,表达式要用小括号\括起来,使返回值更为显见。 示例:
return (size ? size : defaultSize); 5.4. if,if-else,if else-if else语句
? 规则
1) 采用K & R 风格,if-else语句应该具有如下格式:
if (condition) { statements; } if (condition) { statements; } else { statements; } if (condition) { statements; } else if (condition) { statements; } else{ statements; }
2) if语句总是用\和\括起来,这样可以防止书写失误。
17
if (width < height) { dosomething(); } 示例a风格良好的代码行示例b风格不良的代码行
if (width < height) dosomething();
3) 避免在判断语句中字符和整型变量的直接比较,要显式地进行类型转换。
示例:
char a =’a’; if (SCORE_NUMBER == Interger.valueOf(a)) 而不是写成:
if (SCORE_NUMBER== a) ? 建议
1) 在判断语句中,尽量将常量写在左值,而不是右值
示例:
if (0 == count) // 即使写成0 = count也能在编译期发现 而不是写成:
if (count == 0) // 如果写成count = 0则不容易发现问题 2) 对多条件的判断语句,每个条件语句和子条件要用上括号。
示例:
if( (0 == a) && ((SCORE_NUMBER == b) || (c == d)) ) 5.5. for语句
? 规则
1) 一个for语句应该具有如下格式:
for (initialization; condition; update) { statements; } 2) 在for语句的初始化(initialization)或更新子句(update),避免使用三个以上变量而导致复杂度提高。若需要,可以在for循环之前(为初始化子句)或for循环末尾(为更新子句)使用单独的语句。
18
5.6. while语句
? 规则
一个while语句应该具有如下格式
while (condition){ statements; } 5.7. do-while语句
? 规则
一个do-while语句应该具有如下格式:
do { statements; } while (condition); 5.8. switch语句
? 规则
1) 一个switch语句应该具有如下格式:
switch (condition) { case ABC: statements1; /* falls through */ case DEF: statements2; break; case XYZ: statements3; break; default: statements4; break; }
19
2) 每当一个case顺着往下执行时,若没有break语句,应在break语句的位置添加注释。上面的示例代码中就包含注释/* falls through */。
5.9. try-catch语句
? 规则
代码中通过try/catch捕捉异常,catch所捕捉的异常顺序必须遵循类派生相反顺序,否则将会导致部分异常无法捕捉或捕捉处理的代码错误。
20