设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

彻底消灭if-else,你需要这8种方案!

发布时间:2020-03-16 07:16 所属栏目:119 来源:站长网
导读:副标题#e# 【金融特辑】光大****科技部DBA女神带你从0到1揭秘MGR 代码中如果 if-else 比较多,阅读起来比较困难,维护起来也比较困难,很容易出 Bug,接下来,本文将介绍优化 if-else 代码的八种方案。 图片来自 Pexels 优化方案 1:提前 return,去除不必
【金融特辑】光大****科技部DBA女神带你从0到1揭秘MGR

代码中如果 if-else 比较多,阅读起来比较困难,维护起来也比较困难,很容易出 Bug,接下来,本文将介绍优化 if-else 代码的八种方案。

彻底消灭if-else,你需要这8种方案!

图片来自 Pexels

彻底消灭if-else,你需要这8种方案!

优化方案 1:提前 return,去除不必要的 else

如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。

优化前:

if(condition){ 

    //doSomething 

}else{ 

    return ; 

优化后:

if(!condition){ 

    return ; 

//doSomething 

优化方案 2:使用条件三目运算符

使用条件三目运算符可以简化某些 if-else,使代码更加简洁,更具有可读性。

优化前:

int  price ; 

if(condition){ 

    price = 80; 

}else{ 

    price = 100; 

优化后:

int price = condition?80:100; 

优化方案 3:使用枚举

在某些时候,使用枚举也可以优化 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(); 

优化方案 4:合并条件表达式

如果有一系列条件返回一样的结果,可以将它们合并为一个条件表达式,让逻辑更加清晰。

优化前:

double getVipDiscount() { 

        if(age<18){ 

            return 0.8; 

        } 

        if("深圳".equals(city)){ 

            return 0.8; 

        } 

        if(isStudent){ 

            return 0.8; 

        } 

        //do somethig 

    } 

优化后:

double getVipDiscount(){ 

        if(age<18|| "深圳".equals(city)||isStudent){ 

            return 0.8; 

        } 

        //doSomthing 

    } 

优化方案 5:使用 Optional

有时候 if-else 比较多,是因为非空判断导致的,这时候你可以使用 java8 的 Optional 进行优化。

优化前:

String str = "jay@huaxiao"; 

if (str != null) { 

    System.out.println(str); 

} else { 

    System.out.println("Null"); 

优化后:

Optional<String> strOptional = Optional.of("jay@huaxiao"); 

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读