java中卫语句详解

如果条件语句极其复杂,就应该将条件语句拆解开,然后逐个检查,并在条件为真时立刻从函数中返回,这样的单独检查通常被称之为“卫语句”(guard clauses)

《重构---改善既有代码的设计》

在阿里巴巴 Java 规范里也写到 “多层条件语句建议使用卫语句、策略模式、状态模式等方式重构。”

那么到底什么是卫语句

是否遇到(敲)过这样的代码,就像下面这种 “横放着的金字塔”:

if(true){
        if(true){
                if(true){
                        if(true){
                                if(true){
                                       if(true){
                                       }
                                }
                        }
                }
        }
 }

实战演示一下吧

如题 : 从一百万里面找到所有能同时被 3 5 7 9 11 整除的数字

那么我们会不会这样写,举个小栗子,相信你遇到过
/**
* 从一百万里面找到所有能同时被 3 5 7 9 11 整除的数字
*/
for (int i = 0; i < 10000; i++) {
  if (i%3==0){
        if (i%5==0){
            if (i%7==0){
                if (i%9==0){
                    if (i%11==0){
                        System.out.println(i);
                    }
                }
            }
        }
    }
}

那么卫语句改写后就是,如下

发现没有,这样写会优雅很多,无论在阅读还是运行上都是上上选
/**
* 从一百万里面找到所有能同时被 3 5 7 9 11 整除的数字
*/
for (int i = 0; i < 10000; i++) {
   if (i%3!=0){
       continue;
   }
   if (i%5!=0){
       continue;
   }
   if (i%7!=0){
       continue;
   }
   if (i%9!=0){
       continue;
   }
   if (i%11==0){
       System.out.println(i);
   }
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值