重构第九章
4.Remove Control Flag(移除控制标记)
在一系列布尔表达式中,某个变量带有[控制标记]作用。以break语句或return语句取代控制标记。
Example:
void checkSecurity (string[] people) {
boolean found = false;
for(int i =0; i<people.length; i++) {
if(!found) {
if(people[i].equals("Don")) {
sendAlert();
found = true;
}
if(people[i].equal("John")) {
sendAlert();
found = true;
}
}
}
}
End:
void checkSecurity (string[] people) {
for(int i =0; i<people.length; i++) {
if(people[i].equals("Don")) {
sendAlert();
break;
}
if(people[i].equal("John")) {
sendAlert();
break;
}
}
}
Conclusion:
用以判断何时停止条件检查的控制标记,会大大的降低代码的可读性。使用break、continue和return跳出复杂的条件语句,会使得条件语句的真正用途清晰的多。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论