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 } }