控制语句规范(java开发规范 阿里巴巴)

2019-06-10  本文已影响0人  黄靠谱

控制语句规范

  1. 【强制】在一个 switch 块内,每个 case 要么通过 break/return 等来终止,要么注释说明程序将继续执行到哪一个 case 为止;在一个 switch 块内,都必须包含一个 default 语句并且放在最后,即使它什么代码也没有。
  1. 【强制】在 if/else/for/while/do 语句中必须使用大括号,即使只有一行代码,避免使用下面的形式:if (condition) statements;
    虽然直接结束会很简洁,但是为了让代码看起来看清晰,还是用一个大括号,即使一行代码也没有,也用空的大括号包起来。
    例如
if(page > 100){}

if(page == 100){
    ...
} 
  1. 【推荐】推荐尽量少用 else, if-else 的方式可以改写成(卫语句):
if(condition){
 ...
 return obj;
}

// 接着写 else 的业务逻辑代码;
说明:如果非得使用 if()...else if()...else...方式表达逻辑,【强制】请勿超过 3 层,超过请使用状态设计模式。

正例:逻辑上超过 3 层的 if-else 代码可以使用卫语句,或者状态模式来实现。

ifElse写的时候,也可以考虑抽离方法+卫语句,来提升代码的可读性

重构以前

public void add(Object element) {
  if (!readOnly) {
    int newSize = size + 1;
    if (newSize > elements.length) {
      Object[] newElements = new Object[elements.length + 10];
      for (int i = 0; i < size; i++) {
        newElements[i] = elements[i];
      }
      
      elements = newElements
    }
    elements[size++] = element;
  }
}

重构以后

public void add(Object element) {
  if (readOnly) {
    return;
  }
  
  if (overCapacity()) {
    grow();
  }
  
  addElement(element);
}

https://www.jianshu.com/p/1db0bba283f0

  1. 【推荐】除常用方法(如 getXxx/isXxx)等外,不要在条件判断中执行其它复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性。
    说明:很多 if 语句内的逻辑相当复杂,阅读者需要分析条件表达式的最终结果,才能明确什么样的条件执行什么样的语句,那么,如果阅读者分析逻辑表达式错误呢?
    正例:
//伪代码如下
boolean existed = (file.open(fileName, "w") != null) && (...) || (...);
if (existed) {
 ...
}

反例:

if ((file.open(fileName, "w") != null) && (...) || (...)) {
 ...
}
上一篇下一篇

猜你喜欢

热点阅读