卫语句

转载浅谈使用卫语句重构方法

1 卫语句定义

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

说人话就是:写方法时在合适的时候尽快return,少用else

2 按卫语句对函数进行重构应遵循

  1. 及时return,if中能return就return。(一旦满足条件return后你根本无需关注后面的代码)
  2. 能够return的就尽量少使用else。(用else太多,读者需要维护大量的栈在大脑中)
  3. 减少嵌套,一般嵌套超过4层读者就会产生阅读恐惧感。

3 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
if(it == 活的){
if(it == 人){
if(it != 女人){
return 不喜欢;
} else {
return 喜欢;
}
} else {
return 不喜欢;
}
} else {
return 不喜欢;
}

以上代码无非就是表达 我只喜欢活的女人 的意思,但是代码一层套一层明显妨碍了我在第一时间获取最核心信息的效率,使用卫语句来表达就是:

1
2
3
4
5
6
7
8
9
if (it != 活的){return 不喜欢}

if(it!=人){return 不喜欢}

if(it!=女人){return 不喜欢}

if(it == 女人 && it == 活的) {return 喜欢}

return 不喜欢

这样看起来,代码就更明晰易懂。

有点逆向思维的意思。