建议按照此规范处理 UpperCamelCase 风格:每个单词首字母大写,其余字母小写; lowerCamelCase 风格:首单词全小写,后面每单词首字母大写,其余字母小写; 示例: 【错误用法】
userinfo
nowCustomerID
【正确用法】
UserInfo /* UpperCamelCase */
nowCustomerId /* lowerCamelCase */
1包 按照此规范处理 包名全部小写,连续的单词使用 ’ . ’ 连接起来,不使用下划线。 示例: 【正确用法】
package com.dtdream.net ;
package com.dtdream.topo ;
2类和接口 按照此规范处理 类名和接口名采用 UpperCamelCase 风格。 枚举类型也是一种类,对普通类名的要求适用于枚举类名,另外要求枚举的定义全大写,每个定义占一行。 示例: 【正确用法】
public class UserInfo {
...
}
public enum MyColor {
RED,
YELLOW,
BLUE;
}
3方法 按照此规范处理 1、方法 名采用 lowerCamelCase 风格; 示例: 【正确用法】
public String getUsrName () {
return usrName;
}
public void setUsrName (String usrName) {
this.usrName = usrName;
}
public String getType ();
public boolean isFinished ();
public void setVisiable (boolean isVisiable);
public void show ();
public void addKeyListener (Listener listener);
4变量 按照此规范处理, 变量名采用 lowerCamelCase 风格。 类中布尔类型的变量名 不要加 is 前缀,否则部分框架解析会引起序列化错误。 示例 : 【正确用法】
public class UsrInfo {
private String usrName ;
private int usrCnt = 0;
private Map<int, String> usrInfoMap = new HashMap<>();
...
public String getUsrName(int usrIndex ) {
int usrAge ;
...
}
}
5常量 按照此规范处理 常量名命名格式为 CONSTANT_CASE ,全部字母大写,用下划线分隔单词,使用 static final 修饰。 注: 常量是一个 static final 字段,但并非所有的 static final 字段都是常量。 示例: 【 错误用法】
private static final Logger LOGGER = getLogger();
private static final int usrMaxCnt = 1024;
private static final String serverIpAddress = "xx.xx.xx.xx";
【正确用法】
/* log 句柄是 static final 类型,但却并非是一个常量 */
private static final Logger log = getLogger();
private static final int MAX_USER_CNT = 1024;
private static final String SERVER_IP_ADDRESS = "xx.xx.xx.xx";
6约束 建议按照此规范处理 为了使代码清晰易懂,类、方法、变量命名应遵循如下约束:
String _name ;
String $name ;
String name_ ;
String name$ ;
int 某变量 = 3 ;
【正确用法】
从远程仓库拉取代码的类命名为 PullCodeFromRemoteRepository
1每行最多包含一条语句 建议按照此规范处理 避免将多个短语写在一行,即一行最多只写一条语句。 示例: 【错误用法】
a = funA(); b = funB();
【正确用法】
a = funA();
b = funB();
2import 不要使用通配符 按照此规范处理 import 语句不要使用通配符 ‘*’ 。 示例: 【 错误用法】
import java.util. * ;
【正确用法】
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
3if-else 语句 按照此规范处理 1、if、else分支代码用大括号 {} 包围, else 与 if 的右大括号位于同一行,使用空格分开; 示例: 【 错误用法】
if (condition) statement;
【正确用法】
if (condition) {
statement;
} else if (condition) {
statement;
} else {
statement;
}
2、为提高代码可读性,便于理解,应保持判断方向与条件方向一致; 示例: 【错误用法】 判断方向为反向,但条件方向为正向,两者不一致
/* 反向判断 */
if (!isInvalidUsrName(usrName)) {
/* 名字有效时进入,条件方向为正向 */
...
}
【正确用法】 判断方向和条件方向均为正向,两者一致
/* 正向判断 */
if (isValidUsrName(usrName)) {
/* 名字有效时进入,条件方向为正向 */
...
}
3、除常用方法(如 getXxx/isXxx) 外,不要在条件判断中执行其它复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性 ; 示例: 【错误用法】
if ((file.open(fileName, "w") != null) && (...) || (...)) {
...
}
【正确用法】
final boolean existed = (file.open(fileName, "w") != null) && (...) || (...);
if (existed) {
...
}
4for 语句 按照此规范处理
for语句作用范围代码用大括号{}包围。 示例: 【正确用法】
for (int i = 0; i < 10; i++) {
doSomething();
}
List<String> usrNameList;
for (String usrName : usrNameList) {
doSomething();
}
5while 语句 while语句作用范围代码用大括号{}包围。 示例: 【正确用法】
while (hasNext()) {
doSomething();
}
6do-while 语句 按照此规范处理 1、do 语句作用范围代码用大括号 {} 包围; 2、while 语句与 do 的右大括号位于同一行,中间用空格分开。 示例: 【正确用法】
do {
doSomething();
} while (hasNext());
7switch-case 语句 1、switch 作用范围代码使用大括号 {} 包围, case 分支可以不使用大括号 {} 包围; 2、case 分支较 switch 语句缩进 4 个空格; 3、case 分支不应包含大段代码,如分支功能复杂,建议封装函数; 4、如果 case 分支中不需要 break ,且这个 case 包含语句,在应该出现 break 的地方增加一条注释说明此情况,注释内容为 " /* fall-through */ " ; 5、必须有 default 分支; 示例: 【正确用法】
switch (iType) {
case TYPE_ONE:
case TYPE_TWO:
doSomething();
/* fall-through */
case TYPE_THREE:
doSomething();
break;
default:
doSomething();
break;
}
8try-catch 语句 按照此规范处理 1、try 、catch 、finally 语句作用范围代码使用大括号 {} 包围; 2、catch 语句与 try 的右大括号位于同一行,中间用空格隔开; 3、如果有 finally 分支, finally 语句与 try 或 catch 的右大括号位于同一行,中间用空格隔开; 示例: 【正确用法】
try {
doSomething();
} catch (Exception e) {
handleException(e);
} finally {
...
}