有问题请联系管理员stephenking@fanruan.com

Page tree
Skip to end of metadata
Go to start of metadata

1.强制接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁 性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是 与接口方法相关,并且是整个应用的基础常量。

正确的写法
interface Animal {
   int countOfLegs();
}
错误的写法
interface Animal {
   public int countOfLegs();
}
 

2.强制大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则:

 1) 左大括号前不换行。

 2) 左大括号后换行。

 3) 右大括号前换行。

 4) 右大括号后还有else等代码则不换行;表示终止右大括号后必须换行。 

正确的写法
public void calculateCountOfStock() {}
public void calculateCountOfStock() {
    doSomething();
}


3.强制if/for/while/switch/do 等保留字与左右括号之间都必须加空格。

正确的写法
if (statement) { 
   return; 
}
错误的写法
if(statement){ 
   return; 
}


4.强制任何运算符左右必须加一个空格。 

5.强制方法参数在定义和传入时,多个参数逗号后边必须加空格。 

6.强制方法参数在定义和传入时,多个参数逗号后边必须加空格。 

正确的写法
invokeMethod("a", "b", "c");
错误的写法
invokeMethod("a","b","c");

7.强制任意一个方法的长度不得超过50行。过长的方法不方便写单元测试后期的维护以及扩展,尽量做到一个方法只做一件单一的事情。

8.强制在Java代码中需要输出JSON格式时,JSON字符串需要按照标准写。

正确的写法
{"aa":"bb"};
错误的写法
{a:"bb"}; 
{'a':"bb"};

 

9.强制在写需要输出到客户端的JSON对象时,如果需要输出数组对象,不要使用普通的Java数组对象,要使用JSONArray对象。

示例写法
// 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。

正确的写法
if (name == null) {
   return StringUtils.EMPTY;// 正确
}
错误的写法
if (name == null) {
    return  "";// 不正确
}

11.强制判断字符串是否为空,使用StringUtils#isEmpty(String);

正确的写法
if (StringUtils.isEmpty(name)) { // 正确
}
错误的写法
if ("".equals(name)) {// 不正确
    
}

12.强制将一个对象转化为字符串,不能直接使用toString方法,需要使用GeneralUtils#objectToString(Object)方法。

正确的写法
String okStr = GeneralUtils.objectToString(key);
错误的写法
String result = key.toString();// 错误,无法避免空指针等错误

13.强制不要使用IDE自带的equals和hashCode生成模板,模板生成的方法在增加新的属性或者有特殊判断的时候难以正确处理,一律手写equals方法和hashCode方法。

示例代码
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);
}
  • No labels
Write a comment…