1. Java编码规范
- 命名规范
- Package命名 [NAMING.PKG-2]
- Class命名 [NAMING.NCL-2]
- Interface命名 [NAMING.NITF-2]
- Exception Class命名 [NAMING.NE-2]
- Unit Test Class命名 [NAMING.NE-2]
- Enum type命名 [NAMING.NENUM-2]
- Methods命名 [NAMING.NMP-2]
- Local variables命名 [NAMING.NLV-2]
- 常量命名 [NAMING.USF-2]
- . 类名禁止使用java内置类名 [NAMING.DJLO-2]
- . 标示符禁止使用java关键字 [NAMING.DJLO-2]
- . 禁止使用sun预留包名 [NAMING.RPKG-2]
- . 禁止仅通过大小写区分变量 [NAMING.UUVN-4]
- 注释规范
- 格式规范
1.1. 命名规范
1.1.1. Package命名 [NAMING.PKG-2]
Package命名 [NAMING.PKG-2]
描述:
Package名必须为小写字母或数字,且必须以字母开头;
平台产品中要求包名为com.seeyon.ctp.xxx或com.seeyon.apps.xxx
xxx为应用名如collaboration、edoc ...
示例:
// CTP平台表单模块
package com.seeyon.ctp.form;
// 会议应用
package com.seeyon.apps.meeting;
1.1.2. Class命名 [NAMING.NCL-2]
描述:
Class名首字母必须大写,如果是某个Interface的实现,要求命名采用Interface
+Impl
示例:
public interface CollaborationManager{};
public class CollaborationManagerImpl implements CollaborationManager{
}
1.1.3. Interface命名 [NAMING.NITF-2]
描述:
Interface命名首字母必须大写
示例:
public interface CollaborationManager{
}
1.1.4. Exception Class命名 [NAMING.NE-2]
描述:
Exception class命名必须以Exception结尾
示例:
public class NEFormatException extends Exception{
}
1.1.5. Unit Test Class命名 [NAMING.NE-2]
描述:
Unit test class命名必须以Test结尾
示例:
public class FooTest extends TestCase{
}
1.1.6. Enum type命名 [NAMING.NENUM-2]
描述:
Enum type命名首字母必须大写
示例:
private enum Grade {
A, B, C, D, F
};
1.1.7. Methods命名 [NAMING.NMP-2]
描述:
Method命名首字母必须小写
示例:
public class NMFixed {
void method () { // FIXED
}
}
1.1.8. Local variables命名 [NAMING.NLV-2]
描述:
Local variable命名首字母必须小写
示例:
private int example = 0;
1.1.9. 常量命名 [NAMING.USF-2]
描述:
所有用 ”final”、”static” 修饰的变量命名要求全大写
示例:
public static final int SIZE = 10;
private static final Logger LOGGER;
1.1.10. . 类名禁止使用java内置类名 [NAMING.DJLO-2]
描述:
类名禁止使用java内置类名
错误示例:
public class Integer{
}
1.1.11. . 标示符禁止使用java关键字 [NAMING.DJLO-2]
描述:
标示符禁止使用java关键字
错误示例:
private String enum;
private int assert;
1.1.12. . 禁止使用sun预留包名 [NAMING.RPKG-2]
描述:
禁止使用sun预留包名
错误示例:
package java.rules.naming;
1.1.13. . 禁止仅通过大小写区分变量 [NAMING.UUVN-4]
描述:
禁止仅通过大小写区分变量
错误示例:
int foo = 9;
int Foo = 9;
1.2. 注释规范
1.2.1. java文件头注释 [FORMAT.MCH-2]
描述:
所有java文件需要在文件头添加如下注释段:
/**
* $Author$
* $Rev$
* $Date:: $:
*
* Copyright (C) 2012 Seeyon, Inc. All rights reserved.
*
* This software is the proprietary information of Seeyon, Inc.
* Use is subject to license terms.
*/
package xx.xx.xx;
import xx.xx;
1.2.2. java类注释 [JAVADOC.PJDC-2]
描述:
所有java类需按以下格式添加类注释:
/**
* <p>Title: 应用模块名称</p>
* <p>Description: 代码描述</p>
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: seeyon.com</p>
*/
public final class MyClass
1.2.3. 方法注释 [JAVADOC.PJDM-2]
描述:
所有方法需按以下格式添加方法注释,继承的方法可以使用’@see’、’ @inheritDoc’ tag:
/**
* Executes a mapped SQL SELECT statement that returns data to populate
* a number of result objects within a certain range.
*
* @param id The name of the statement to execute.
* @param skip The number of results to ignore.
* @param max The maximum number of results to return.
* @return A List of result objects.
* @throws java.sql.SQLException If an error occurs.
*/
List queryForList(String id, int skip, int max) throws SQLException;
相关校验点:
[JAVADOC.DPMT-2] 避免无用的javadoc tag
[JAVADOC.MDJT-2] 注释内容要有意义
[JAVADOC.PARAM-2] 每个param都要有'@param' tag
[JAVADOC.MRDC-2] 有返回值的方法必须使用'@return' tag
[JAVADOC.THROW-2] 有异常抛出的方法必须使用'@throws' 或 '@exception' tag
[JAVADOC.VMCR-2] 无返回值的方法不要有'@return' tag
[JAVADOC.BT-4] 不允许使用javadoc中未定义的'@' tag
1.3. 格式规范
1.3.1. 代码长度限制 [FORMAT.LL-2]
描述:
每行代码长度不能超过120个字符
1.3.2. 每个声明占用一个代码行 [FORMAT.OSPL-2]
描述:
每个声明占用一行代码
错误示例:
int i = a + b; return i;
正确示例:
int i = a + b;
return i;
1.3.3. 使用括号分隔复杂表达式 [FORMAT.APAREN-3]
描述:
使用括号分隔复杂表达式提高代码可读性
错误示例:
if (i >= j && i >= 0)
正确示例:
if ((i >= j) && (i >= 0))
1.3.4. 避免过于复杂的判断表达式
if ( workTimeSpecials.size() > 0 && !workTimeSpecials.get(0).getIsRest().equals("0"))
|| workTimeSpecials.size() == 0 && !isWorkDay) {
return;
}
遇到这样的表达式,请使用Extract Local Variable提取为意义明确的变量。
1.3.5. 代码缩进使用空格代替tab [FORMAT.DUT-3]
描述:
代码缩进使用空格代替tab保证代码在非windows系统环境下的可读性
1.3.6. 数组声明格式 [FORMAT.IAD-3]
描述:
数组声明[]放在type后面而不是变量后面
错误示例:
private String str1[], str2[], str3[];
正确示例:
private String [] str1, str2, str3;
1.3.7. 正确使用equals
错误示例:
str.equals("0");
正确示例:
"0".equals(str); // 规避str为null时的空指针异常
1.3.8. 避免不必要的小括号 [FORMAT.UP-3]
描述:
避免不必要的小括号
错误示例:
i = (i + 2);
1.3.9. 与文件同名的类应放在所有类声明的最前面 [FORMAT.FCN-4]
描述:
如果一个文件中定义了多个类,那么与文件同名的类作为主类应放在代码的最前面
1.3.10. 声明中修饰符的使用应遵循正确顺序 [FORMAT.MO-4]
描述:
声明中修饰符的使用应遵循以下顺序:
annotations
public/protected/private
abstract
static
final
transient
volatile
synchronized
native
strictfp