今天教大家一个开发技巧!那就是在开发过程中学会使用卫语句和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);这个逻辑暴露在了最外层,同样增强了代码的可读性和可维护性。
此篇是本专栏的第一篇,后续会坚持每周至少更新一篇!欢迎大家积极监督,同时也希望能对大家有所帮助!