`
weihe6666
  • 浏览: 440089 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

重构,简化条件表达式

 
阅读更多
重构,简化条件表达式

重构一书,早就在手,只是一直没有细细品味,对于堪称经典之书,除了瞻仰之外,不敢评论,但是这本书确实通俗易懂,利用小的改动,让你的代码逻辑更清晰,可阅读行更高等。

重构的工作是建立在有良好测试环境的基础上进行,没有测试做保障,如何才能知道自己的重构不会改变程序原来的逻辑,单元测试是重构的基础,目前我用的是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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式

    本章我们将关注于PHP中条件表达式的简化,这是重构过程中的一个常见问题。在编写程序的过程中,条件表达式有时会变得非常复杂,以至于对程序的可读性造成损害。因此,我们需要掌握一些方法,用于简化这些复杂的条件...

    重构—改善既有代码的设计

    6、4简化条件表达式(SimplifyingConditionalExpressions) 6、5简化函数呼叫(MakingMethodCallsSimpler) 6、6处理概括关系(DealingwithGeneralization) 7、大型重构(BigRefactorings) 8、重构、...

    重构-改善既有代码的设计(chm清晰版)

    作者: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 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 ...

    重构-改善既有代码的设计.pdf

    - **应用场景**:当条件语句过于复杂时,可以通过简化条件表达式来提高代码的可读性和可维护性。 - **操作步骤**:分析条件语句,尝试合并相似的条件分支,或将复杂的条件表达式抽象为单独的方法。 12. **移除...

    重构:改善既有代码的设计.[美]Martin Fowler.epub【文字版手机格式】

    第9章 简化条件表达式 9.1 Decompose Conditional(分解条件表达式) 9.2 Consolidate Conditional [removed]合并条件表达式) 9.3 Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 9.4 Remove ...

    重构:改善既有代码的设计(中文高清版)

    第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)243 ...

    编译原理多行表达式

    多行表达式在优化阶段可能会被重构,以便更高效地执行。 5. **代码生成**:最后,编译器将优化后的中间代码转换为目标代码,即机器可执行的二进制指令。对于多行表达式,编译器会生成相应的控制流结构,如栈帧分配...

    重构 refactoring 英文 有书签

    - 重构方法涵盖了多种技术手段,如简化条件表达式、提取方法、移动特性等。 - 每一种重构技巧都附带有具体的实践案例和指导原则。 4. **重构工具**:随着重构技术的发展,一系列支持重构操作的工具也应运而生,...

    《重构改善既有代码的设计(2010年版)》(Martin Fowler[美] 著,熊节 译)

    第9章 简化条件表达式237 9.1 DecomposeConditional(分解条件表达式)238 9.2 ConsolidateConditionalExpression(合并条件表达式)240 9.3 ConsolidateDuplicateConditionalFragments(合并重复的条件片段)243 ...

Global site tag (gtag.js) - Google Analytics