在《阿里巴巴Java开发手册》中强制规定:避免后续代码维护困难,请勿超过3层。如果超过3层的if-else
的逻辑判断代码可以使卫语句、策略模式、状态模式等来实现。卫语句貌似有点概念,但记不清了,所以在这回顾一下。至于策略模式和状态模式有空也整理整理。
概念
卫语句(guard clauses)就是把复杂的条件表达式拆分成多个条件表达式,比如一个很复杂的表达式,嵌套了好几层的if-then-else
语句,转换为多个if语句,实现它的逻辑,这多条的if语句就是卫语句。
用法
有时候真正的业务代码可能在嵌套多次才执行,其他分支只是简单报错返回的情况。对于这种情况,应该单独检查报错返回的分支,当条件为真时立即返回,这样的单独检查就是应用了卫语句。
作用
卫语句可以把我们的视线从多层嵌套的异常处理中解放出来,集中精力处理真正的业务代码,且能够使得代码结构更为清晰可读。
举栗
使用卫语句之前:
public void today() {
if (!isBusy()) {
if (!isFree()) {
System.out.println(“stay at home to learn Alibaba Java Coding Guidelines.”);
}else{
System.out.println(“go to travel.”);
}
}else{
System.out.println(“change time.”); return;
}
return;
}
复制代码
应用卫语句:
public void today() {
// 卫语句
if (isBusy()) {
System.out.println(“change time.”);
return; // 直接返回
}
// 卫语句
if (isFree()) {
System.out.println(“go to travel.”);
return; // 直接返回
}
// 关注真正的业务代码
System.out.println(“stay at home to learn Alibaba Java Coding Guidelines.”);
return;
}
复制代码