Java中多If else优化 (二)----卫语句

    卫语句就是把复杂的条件表达式拆分成多个条件表达式,减少嵌套。比如一个很复杂的表达式,嵌套了好几层的if - then-else语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句。

    有时候条件式可能出现在嵌套n次才能真正执行,其他分支只是简单报错返回的情况,对于这种情况,应该单独检查报错返回的分支,当条件为真时立即返回,这样的单独检查就是卫语句(guard clauses)。卫语句可以把我们的视线从异常处理中解放出来,集中精力到正常处理的代码中。

    目的:减少嵌套,保持代码逻辑清晰,提高可读性

一些示例:

示例1:

public void function() {  
    if(IsWorkDay()) {  //boolean
       Sysetm.out.println("Error,is work day");  
    } else {  
       if(IsWorkTime()) { //boolean
          Sysetm.out.println("Error ,is work time");  
       } else {  
          ... //执行内容
       }  
    }  
}  

修改为卫语句后:

public void function(){
    if(IsWorkDay()) {
        Sysetm.out.println("Error,is work day"); 
        return; 
    }
    if(IsWorkTime()) {
        Sysetm.out.println("Error ,is work time");
        return;
    }

    ...//执行内容

}

示例2:

//这是一个type类型
private int type = 0;

    /**
     *此方法根据type类型的不同处理不同的业务(此处作为测试代码简单带过)
     *但是每次处理完业务后需在else语句做一个其他业务的处理
     */
    public void getType() {
        if (type == 0) {

        } else {
            if (type == 1) {

            } else {
                if (type == 2) {

                } else {
                    //若在此处在次判断type的值,这个嵌套会更加进行
                    setType();
                }
            }
        }
    }

修改后

public void getTypeNew() {
        /**
         *当type的值满足条件后,直接return掉,将这个方法终止。不再继续进行了。
         *若所有条件均不满足,则执行setType();这个最终else的业务处理
         */
        if (type == 0) {
            return;
        }
        if (type == 1) {
            return;
        }
        if (type == 2) {
            return;
        }
        setType();
    }


参考文章:

https://blog.csdn.net/Soumns_Kris/article/details/78390492

https://blog.csdn.net/KingBoyWorld/article/details/72331420

扫描二维码关注公众号,回复: 2061603 查看本文章
https://blog.csdn.net/a910626/article/details/52160051

猜你喜欢

转载自blog.csdn.net/u012475575/article/details/80968395