WHAT
如果只有一个then,而没有else的分支条件表达中,出现否定操作符,还算合情合理,例如:
if (!someCondition()) {
doSomeThingsForFalse();
}
但是,如果有两个分支,否定的条件表达式在if分支,这个条件语句就会降低可读性,需要颠倒条件表达式
WHEN
- 否定操作在前一个分支的if、then、else语句
HOW
重构前的代码
package reverse.conditional;
public class SomeClass {
public void someMethod() {
if (!someCondition()) {
doSomeThingsForFalse();
} else {
doSomeThingsForTrue();
}
}
private boolean someCondition() {
return false;
}
private void doSomeThingsForTrue() {
// do some things for true
}
private void doSomeThingsForFalse() {
// do some things for false
}
}
这个重构,需要手动操作,没有Eclipse现有重构工具的支持
- 去除条件表达式的否定操作符
- 交换分支语句
重构后的代码
package reverse.conditional;
public class SomeClass {
public void someMethod() {
if (someCondition()) {
doSomeThingsForTrue();
} else {
doSomeThingsForFalse();
}
}
private boolean someCondition() {
return false;
}
private void doSomeThingsForTrue() {
// do some things for true
}
private void doSomeThingsForFalse() {
// do some things for false
}
}