一:提前return,减少else
如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉.
代码举例子:
更改之前:
if (condition1) {
if (condition2) {
return getSomething();
} else {
return 0;
}
} else {
return 0;
}
更改之后
//这里最好对这个flag所判断的逻辑补充注释进行描述
boolean flag = !condition1 || (condition1 && !condition2)
if(flag) {
return 0;
}
if (condition1 && condition2) {
return getSomething();
}
二:使用三元运算符
代码举例:
更改前:
int price ;
if(condition){
price = 80;
}else{
price = 100;
}
更改后:
int price ;
int price = condition?80:100;
三:使用Java8的新特性Optional判断是否为null
代码举例:
更改前:
String str = "xxxxx";
if (str != null) {
System.out.println(str);
} else {
System.out.println("Null");
}
更改后:
Optional<String> strOptional = Optional.of("xxxxx");
strOptional.ifPresentOrElse(System.out::println, () -> System.out.println("Null"));
四:使用枚举减少if --else
代码举例:
更改前:
String OrderStatusDes;
if(orderStatus==0){
OrderStatusDes ="订单未支付";
}else if(OrderStatus==1){
OrderStatusDes ="订单已支付";
}else if(OrderStatus==2){
OrderStatusDes ="已发货";
}
...
更改后:(先定义一个枚举)
public enum OrderStatusEnum {
UN_PAID(0,"订单未支付"),PAIDED(1,"订单已支付"),SENDED(2,"已发货"),;
private int index;
private String desc;
public int getIndex() {
return index;
}
public String getDesc() {
return desc;
}
OrderStatusEnum(int index, String desc){
this.index = index;
this.desc =desc;
}
OrderStatusEnum of(int orderStatus) {
for (OrderStatusEnum temp : OrderStatusEnum.values()) {
if (temp.getIndex() == orderStatus) {
return temp;
}
}
return null;
}
}
有了枚举之后,以上 if-else 逻辑分支,可以优化为一行代码:
String OrderStatusDes = OrderStatusEnum.0f(orderStatus).getDesc();