【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

1.强制构造方法里面禁止加入任何业务逻辑,如果有初始化逻辑,请放在 init 方法中。

正确的写法
public class Fish {
   public Fish() {
      init();
   }
   public void init() {
     // do something for init
   };
} 
错误的写法
public class Fish {
   public Fish() {
      // do something for init
   }
}

2.强制不要向构造函数和公共方法中传递null参数,null参数很难直接从方法声明上去理解该参数的意义。

原始工具方法类
public class Utils {
   public static Border createBorder(Font font, Color color) {
         if (color == null) {
             color = new Color(223, 122,123);
          }
    }
}
正确的写法
//先在Utils里面加这么个方法:
public static Border createBorder(Font font) {
    return createBorder(font, null);
}
//再调用
Border border = Utils.createBorder(font);
错误的写法
Border border = Utils.createBorder(font, null);

3.强制代码中出现的中文(英文)等字符,必须做国际化。

正确的写法
String shapeName = Inter.getLocText("FR-Designer_Chart_Circle");
错误的写法
String shapeName = "圆形";

4.强制如果一个方法的返回值是数组,那么就必须返回一个数组,如果是空值就使用空数组的代替,可以避免外部调用的时候出现空指针错误。

正确的写法
public String[] getNames4JionTheParty() {
     if (a) {  
         return new String[] {"张三", "李四", "王麻子"};
     } else {
         return new String[0];
     }
}
错误的写法
public String[] getNames4JionTheParty() {
     if (a) {  
         return new String[] {"张三", "李四", "王麻子"};
     } else {
         return null;
     }
}

5.强制在需要条件判断的地方,比如if语句里不要写过长的表达式(不超过两个逻辑表达式),此时应该用一个方法来替代表达式。

正确的写法
if (shouldDoSomething(a, dim)) {
    doSomething();
}
boolean shuoldDoSomething(int a, Dimension dim) {
    return a > -1 && a != 1 && dim > width && dim.height > 0;
}
错误的写法
if (a > -1 && a != 1 && dim.width > 0 && dim.height > 0) {
    doSomething();
}

6.强制当switch语法的case和break/return个数必须完全对应上,防止失误导致条件贯穿出错。

正确的写法
public String diffResult(int type) {
    String someDescription = "abc";
    switch (type) {
        case 1:
          someDescription = "qwe";
          break;
        case 2:
          someDescription = "xyz";
          break;
        default:
            someDescription = "mnx";
            break;
    }
    return someDescription;
}
错误的写法
public String diffResult(int type) {
    String someDescription = "abc";
    switch (type) {
        case 1:
          someDescription = "qwe";
        case 2:
          someDescription = "xyz";
          break;
        default:
            someDescription = "mnx";
            break;
    }
    return someDescription;
}

7.强制关于 hashCode 和 equals 的处理,遵循如下规则:

1) 只要重写equals,就必须重写hashCode。
2) 因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的 对象必须重写这两个方法。
3) 如果自定义对象做为Map的键,那么必须重写hashCode和equals。

8.强制使用集合转数组的方法,必须使用集合的toArray(T[] array),传入的是类型完全 一样的数组,大小为0即可。

正确的写法
List<String> list = new ArrayList<String>(2);
list.add("guan");
list.add("bao");
array = list.toArray(new String[0]);  // 修改于2018.09.14
错误的写法
List<String> list = new ArrayList<String>(2);
list.add("guan");
list.add("bao");
array = list.toArray(); 	

9.强制不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator

方式,如果并发操作,需要对 Iterator 对象加锁。 示例请参考:其他规范-Java

10.强制尽量使程序结构能更正确简洁的表达你的意图。如果能不用条件判断,则不要使用条件判断。

正确的写法
return booleanExpression;
错误的写法
if (booleanExpression) {
     return true;
} else {
    return false;
}

11.强制类成员与方法访问控制从严 ,不允许出现提供protected的属性,后续兼容无法处理。

12.强制所有的覆写方法,必须加@Override 注解,避免修改了父类方法,子类方法没有修改导致难以还原的问题,特别是插件开发过程很容易出现。

  • No labels