简化条件表达式之合并重复的条件片段(Comsolidate Duplicate Conditional Fragments)
在条件表达式的每个分支上有着相同的一段代码。将这段重复代码移到条件表达式之外。
动机:一组条件表达式的所有分支都执行了相同的某段代码。你应该将这段代码搬移到表达式外面。这样,代码才能更清楚地表明哪些东西随条件变化而变化、哪些东西保持不变。
做法:1、鉴别出“执行方式不随变化而变化”的代码。
2、如果这些共通代码位于条件表达式起始处,就将它移到条件表达式之前。
3、如果这些共通代码位于条件表达式的尾端,就它移到条件表达式之后。
4、如果这些共通代码位于条件表达式的中段,就需要观察共通代码之前或之后的代码是否改变了什么东西。如果的确有所改变,应该首先将共通代码向前或向后移动,移至条件表达式的起始处或尾端,再以前面所说的办法来处理。
5、如果共通代码不止一条语句,应该首先使用 Extract Method(提炼函数)将共通代码提炼到一个独立函数之后,再以前面所说的办法来处理。
if (isSpecialDeal()) { total = price * 0.95; send(); } else { total = price * 0.98; send(); } if (isSpecialDeal()) total = price * 0.95; else total = price * 0.98; send();