开发技巧1:学会使用卫语句和continue

  今天教大家一个开发技巧!那就是在开发过程中学会使用卫语句和continue。下面且听我讲解。

1. 卫语句

  看到 “卫语句” 这三个字估计有些同学看得很懵,压根不知道啥意思。其实其含义很简单,卫语句就是把复杂的条件表达式拆分成多个条件表达式。之所以阿里巴巴开发手册中建议我们学会使用卫语句,那就是因为使用卫语句可以减少if的层级嵌套。说起来似乎很难懂,不急,我举例子给大家:
  未使用卫语句的代码:

 // 未使用卫语句
  public static void test7Wrong(String color) {
        if ("red".equals(color)) {
            System.out.println("red");
        } else if ("blue".equals(color)) {
            System.out.println("blue");
        } else if ("orange".equals(color)) {
            System.out.println("orange");
        } else {
            System.out.println("yellow");
        }
    }

  使用卫语句的代码:

  // 使用卫语句
  public static void test7(String color) {
      if ("red".equals(color)) {
          System.out.println("red");
          return;
      }
      if ("blue".equals(color)) {
          System.out.println("blue");
          return;
      }
      if ("orange".equals(color)) {
          System.out.println("orange");
          return;
      }
      System.out.println("yellow");
  }

  在如上的例子中,放在前面多条的if语句就是卫语句。还不明白?没关系,网上有个同学举了一个非常简单易懂的例子,你可以结合着再尝试理解下。如下所示:

if(obj != null{
  doSomething();
}
 
// 转换成卫语句以后的代码如下:
if(obj == null){
   return;
}
 doSomething();

  从这个同学的例子中可看出,使用卫语句后doSomething()这部逻辑已经抽取到了最外层,而不会放在if条件语句中,增强了代码的可读性和可维护性。
  阿里巴巴开发手册中的原话是这样说的,在这里我贴出来,帮助大家更好的去理解:

【推荐】表达异常的分支时,少用 if-else 方式,这种方式可以改写成:if (condition) { … return obj; } // 接着写else的业务逻辑代码;
说明:如果非使用 if()…else if()…else…方式表达逻辑,避免后续代码维护困难,请勿超过 3 层

2. continue

  continue的语法估计大家熟到不能再熟了,但最近在开发过程中我居然对它在代码中的使用尤为钦佩。为啥呢?且听我慢慢说说。
  continue,大家都知道它是使用在循环语句中的,比如for循环、while循环。作用就是直接跳过continue下面的逻辑并进入到下一个循环。这里我所强调的就是它同样也具备了卫语句的特征。举个例子,假设我们只需要列表中不为"b"的元素,那么就会有如下两种做法:

   List<String> stringList = new ArrayList<>(Arrays.asList("a","b","c","d","b"));
  List<String> resultList = new ArrayList<>(16);
  // 未使用continue
  for (String string : stringList) {
      if (!"b".equals(string)) {
          resultList.add(string);
      }
  }
 // 使用continue
  for (String string : stringList) {
      if ("b".equals(string)) {
          continue;
      }
      resultList.add(string);
  }

  从上面的例子可以看出continue同样起到了类似卫语句那样的特征,使得resultList.add(string);这个逻辑暴露在了最外层,同样增强了代码的可读性和可维护性。

   此篇是本专栏的第一篇,后续会坚持每周至少更新一篇!欢迎大家积极监督,同时也希望能对大家有所帮助!

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Melo_FengZhi

您的鼓励对我就是巨大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值