1.
接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁 性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是 与接口方法相关,并且是整个应用的基础常量。
Code Block |
---|
|
interface Animal {
int countOfLegs();
} |
Code Block |
---|
|
interface Animal {
public int countOfLegs();
}
|
2.
大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有else等代码则不换行;表示终止右大括号后必须换行。
Code Block |
---|
|
public void calculateCountOfStock() {}
public void calculateCountOfStock() {
doSomething();
} |
3.
if/for/while/switch/do 等保留字与左右括号之间都必须加空格。
Code Block |
---|
|
if (statement) {
return;
} |
Code Block |
---|
|
if(statement){
return;
} |
4.
任何运算符左右必须加一个空格。
5.
方法参数在定义和传入时,多个参数逗号后边必须加空格。
6.
方法参数在定义和传入时,多个参数逗号后边必须加空格。
Code Block |
---|
|
invokeMethod("a", "b", "c"); |
Code Block |
---|
|
invokeMethod("a","b","c"); |
7.
任意一个方法的长度不得超过50行。过长的方法不方便写单元测试后期的维护以及扩展,尽量做到一个方法只做一件单一的事情。
8.
在Java代码中需要输出JSON格式时,JSON字符串需要按照标准写。
Code Block |
---|
|
{a:"bb"};
{'a':"bb"}; |
9.
在写需要输出到客户端的JSON对象时,如果需要输出数组对象,不要使用普通的Java数组对象,要使用JSONArray对象。
Code Block |
---|
|
// JSON对象
JSONObject jo = JSONObject.create();
String[] names = new String[]{"aaa", "bbb", "ccc"};
jo.put("names", names);
// JSON数组
JSONObject jo = JSONObject.create();
JSONArray ja = new JSONArray(); ja.put("aaa").put("bbb").put("ccc"); jo.put("names", ja); |
10.
如果需要使用空字符串,不要直接使用"",用StringUtils.EMPTY。
Code Block |
---|
|
if (name == null) {
return StringUtils.EMPTY;// 正确
} |
Code Block |
---|
|
if (name == null) {
return "";// 不正确
} |
11.
判断字符串是否为空,使用StringUtils#isEmpty(String);
Code Block |
---|
|
if (StringUtils.isEmpty(name)) { // 正确
} |
Code Block |
---|
|
if ("".equals(name)) {// 不正确
} |
12.
将一个对象转化为字符串,不能直接使用toString方法,需要使用GeneralUtils#objectToString(Object)方法。
Code Block |
---|
|
String okStr = GeneralUtils.objectToString(key); |
Code Block |
---|
|
String result = key.toString();// 错误,无法避免空指针等错误 |
13.
不要使用IDE自带的equals和hashCode生成模板,模板生成的方法在增加新的属性或者有特殊判断的时候难以正确处理,一律手写equals方法和hashCode方法。
Code Block |
---|
|
public boolean equals(Object obj) {
return obj instanceof MyObject
&& super.equals(obj) // 这个根据实际情况写,可能不需要
&& ComparatorUtils.equals(this.src, ((MyObject) obj).src)
&& this.isOverflowx() == ((MyObject) obj).isOverflowx()
&& this.isOverflowy() == ((MyObject) obj).isOverflowy()
&& ComparatorUtils.equals(this.parameters, ((MyObject) obj).parameters);
} |