3.9. 布局补充
? 规则
1) 每次只声明一个变量,不要使用组合声明,比如int a, b
2) 使用非C风格的数组声明,中括号是类型的一部分:String[] args, 而非String args[]。 ? 建议 3) 枚举类
当枚举常量比较多的时候(行字符个数超过80个)建议换行。
由于枚举类也是一个类,因此所有适用于类的格式规则也适用于枚举类。 4) 需要时才声明,并尽快进行初始化
不要在一个代码块的开头把局部变量一次性都声明了(这是c语言的做法),而是在第一次需要使用它时才声明。 局部变量在声明时最好就进行初始化,或者声明后尽快进行初始化。 5) 注解(Annotations)
注解紧跟在文档块后面,应用于类、方法和构造函数,一个注解独占一行。 例如:
@Override @Nullable public String getNameIfPresent() { ... }
11
4. 注释规范
4.1. 整体要求
? 规则
注释按 JavaDoc 的注释规范来写。 ? 建议
1) 建议注释行不少于源程序的1/3。 2) 尽量用代码本身而不是注释来阐述。
示例:
// Check to see if the employee is eligible for full benefits if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) 可调整为:
if (employee.isEligibleForFullBenefits()) 3) 原则上不允许存在注释掉的代码。
示例:
/*A a = new B(); // System.out.println(\B b = new B();*/ 4) 代码中待实现的地方推荐使用//TODO注释,需修正或优化、完善的地方推荐使用//FIXME注释,并在注释符号后写明具体内容。 5) 对于以下情况需要写注释: ? 具有特殊处理意义的 ? 按常规不能理解的 ? 上下文相关的 ? 能帮助快速理解代码 示例:
帮助快速理解代码:
12
// 以配置为优先,未配的情况下通过表中记录计算序列起始值。 int start = JefConfiguration.getInt(Item.AUTO_SEQUENCE_START, -1); if (start == -1) { start = (StringUtils.isNotBlank(tableName) && } StringUtils.isNotBlank(columnName)) ? meta.getSequenceStartValue(schema, tableName, columnName, null) : DEFAULT_SEQ_START; 阐明意图:
if (dbs.isEmpty()) { //当第一个库且没有名称时,容错,默认创建一个名称 ... } 警示:
// Don't run unless you have some time to kill. public void testWithReallyBigFile() { writeLinesToFile(10000000); response.setBody(testFile); } response.readyToSend(this); assertSubString(\, responseString); assertTrue(bytesSent > 1000000000); String responseString = output.toString(); 4.2. 块注释
1) 块注释与其周围的代码在同一缩进级别。它们可以是/* ... */风格,也可以是// ...风格。对于多行的/* ... */注释,后续行必须从*开始, 并且与前一行的*对齐。 示例1:
/* * This is * okay. */ 示例2:
// And so // is this. 示例3:
/* Or you can
13
* even do this. */ 2) 注释不要封闭在由星号或其它字符绘制的框架里。 以下注释方式不符合规范:
/***************************** *这样注释不符合规范 * ******************************/ 4.3. 单行注释
? 规则
1) 单行注释以“//”开头,后跟注释内容。
2) 短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见\块注释\。单行注释之前应该有一个空行。 示例:
if (condition) { // Handle the condition. ... } 4.4. 尾端注释
? 建议
极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。
以下是一个Java代码中尾端注释的例子:
if (a == 2) { return TRUE;// special case } else { return isPrime(a);// works only for odd a }
14
4.5. 类的注释
? 规则
采用JavaDoc能够识别的格式。具体格式如下(未注明 optional 的均为必须具有):
/** * 类简述 *
* 类说明、详细描述(optional) *
* * @Company * @Copyright * @author (公司email) * @version (optional) * @since (optional) * @see (optional) * @CreateDate${date} */ 4.6. 方法注释? 规则
方法头部注释采用JavaDoc能够识别的格式。 示例:
/** * 功能简述 *
* 详细描述(可选) * * @param 参数1参数1类型参数1说明 * @param 参数2参数2类型参数2说明 * @return 返回值 * @exception 异常1,异常2... ** 修改记录:(日期,修改人,描述) (可选) *
*/15