重构,简化条件表达式
重构一书,早就在手,只是一直没有细细品味,对于堪称经典之书,除了瞻仰之外,不敢评论,但是这本书确实通俗易懂,利用小的改动,让你的代码逻辑更清晰,可阅读行更高等。
重构的工作是建立在有良好测试环境的基础上进行,没有测试做保障,如何才能知道自己的重构不会改变程序原来的逻辑,单元测试是重构的基础,目前我用的是gtest单元测试框架。
本文记录简化条件表达式重构方法:
1.分解条件表达式
从if、then、else中三个段落中提炼独立函数。
if(date.before(SUMMER_START) || date.after(SUMMER_END)) {
charge = quantity * _winterRate + _winterServiceChange;
}else charge = quantity * _summerRate;
经过提炼之后:
if(notSummer(date)) {
charge = winterCharge(quantity);
else charge = summerCharge(quantity);
针对重构前和重构后,可以看出,重构后的可读性更高,不至于如重构前看到if语句里的表达式要思考一会才会明白,这种小的提炼积少成多,对整个代码的风格和代码的可读性带来巨大的改变。
2.合并表达式
当一连串条件检查:检查条件各不相同,但是结果却是一样,此时,就应该用“&&”、“||”将他们合并为一个条件表达式。
double disabilityAmount() {
if(_seniority < 2) return 0;
if(_monthsDisabled > 12) return 0;
if(_isPartTime) return 0;
重构后:
double disabilityAmount() {
if(isNotEligibleForDiasbility()) return 0;
3. 合并重复的条件片段
在条件表达式的每一个分支上有着相同的一段代码,这是就要注意把他们移到条件表达式之外。
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();
分享到:
相关推荐
本章我们将关注于PHP中条件表达式的简化,这是重构过程中的一个常见问题。在编写程序的过程中,条件表达式有时会变得非常复杂,以至于对程序的可读性造成损害。因此,我们需要掌握一些方法,用于简化这些复杂的条件...
6、4简化条件表达式(SimplifyingConditionalExpressions) 6、5简化函数呼叫(MakingMethodCallsSimpler) 6、6处理概括关系(DealingwithGeneralization) 7、大型重构(BigRefactorings) 8、重构、...
作者:Martin Fowler,Kent Beck,John Brant ,William Opdyke ...章节九 简化条件表达式 章节十 简化函数调用 章节十一 处理概括关系 章节十二 大型重构 章节十三 重构,复用与现实 章节十四 重构工具 章节十五 集成
第 9 章:简化条件表达式(Simplifying Conditional Expressions) 第 10 章:简化函数调用(Making Method Calls Simpler) 第 11 章:处理概括关系(Dealing with Generalization) 第 12 章:大型重构...
第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)243 ...
第9章 简化条件表达式 237 9.1 Decompose Conditional(分解条件表达式) 238 9.2 Consolidate Conditional Expression(合并条件表达式) 240 9.3 Consolidate Duplicate Conditional Fragments(合并重复的...
第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)243 ...
- **应用场景**:当条件语句过于复杂时,可以通过简化条件表达式来提高代码的可读性和可维护性。 - **操作步骤**:分析条件语句,尝试合并相似的条件分支,或将复杂的条件表达式抽象为单独的方法。 12. **移除...
第9章 简化条件表达式 9.1 Decompose Conditional(分解条件表达式) 9.2 Consolidate Conditional [removed]合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove ...
多行表达式在优化阶段可能会被重构,以便更高效地执行。 5. **代码生成**:最后,编译器将优化后的中间代码转换为目标代码,即机器可执行的二进制指令。对于多行表达式,编译器会生成相应的控制流结构,如栈帧分配...
- 重构方法涵盖了多种技术手段,如简化条件表达式、提取方法、移动特性等。 - 每一种重构技巧都附带有具体的实践案例和指导原则。 4. **重构工具**:随着重构技术的发展,一系列支持重构操作的工具也应运而生,...
第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)243 ...
3. **简化条件表达式**:通过减少嵌套条件语句、引入布尔变量等方式简化复杂的条件逻辑。 4. **移动特征**:如果某个类包含不属于其职责范围内的属性或方法,应考虑将其移到更合适的位置。 5. **替换算法**:当现有...