北京诺必达科技有限公司致远OA北京技术服务商,OA系统JAVA编码规范分享
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