重构摘要9_简化条件表达式

《重构-改善既有代码的设计》Martin Fowler 摘要: 第九章 简化条件表达式

Decompose Conditinal 分解条件表达式

你有一个复杂的条件(if-then-else)语句

从三个段落中分别提炼出独立函数

Consolidate Conditional Expression 合并条件表达式

你有一系列条件测试,都得到相同结果

将这些测试合并成为一个条件表达式,并将这个条件表达式提炼成为一个独立函数

检查用意更清晰,有时也不用这么做

Consolidate Duplicate Conditional Fragments 合并重复的条件片段

在条件表达式的每个分支上有着相同的一段代码

将这段重复代码搬移到条件表达式之外

Remove Control Flag 移除控制标记

在一系列布尔表达式中,某个变量带有“控制标记”作用

以break语句或return语句取代控制标记

Replace Nested Conditional with Guard Clauses 以卫语句取代嵌套条件表达式

函数中的条件逻辑使人难以看清正常的执行路径

使用卫语句(单独检查)表现所有特殊情况

Replace Conditional with Polymorphism 以多态取代条件表达式

你手上有个表达式,它根据对象类型的不同而选择不同的行为。

将这个条件表达式的每个分支放进一个子类内的覆写函数中,将原始函数声明为抽象函数。

Introduce Null Object 引入Null对象

你需要再三检查某对象是否为null

将null值替换为null对象

空对象一定是常量,它们的任何成分都不会发生变化。

Nullabel接口 Null接口 同样的方法

常常可以看到空对象会返回其他空对象 。

Null Object 模式 Special Case模式 特例类 NAN 降低“错误处理”开销

Introduce Assertion 引入断言

某一段代码需要对程序状态做出某种加上

以断言明确表现这种假设

检查一定必须为真的条件

重构摘要9_简化条件表达式,布布扣,bubuko.com

时间: 2024-08-05 04:13:47

重构摘要9_简化条件表达式的相关文章

重构手法之简化条件表达式【1】

返回总目录 本小节目录 Decompose Conditional(分解条件表达式) Consolidate Conditional Expression(合并条件表达式) 1Decompose Conditional(分解条件表达式) 概要 你有一个复杂的条件(if-else if-else)语句. 从if.else if.else三个段落中分别提炼出独立函数. 动机 复杂的条件逻辑往往会导致程序复杂度上升.编写代码来检查不同的条件分支.根据不同的分支做不同的事往往又会导致函数过长. 将条件表

【重构.改善既有代码的设计】9、简化条件表达式

简化条件表达式 Decompose Conditional(分解条件式) 你有一个复杂的条件(if-then-else)语句. 从if.then.else 三个段落中分别提炼出独立函数. 分解为多个独立函数,根据每个小块代码的用 途,为分解而得的新函数命名,并将原函数中对应的代码替换成「对新建函数的调用」,从而更清楚地表达自己的意图. 对于条件逻辑,[将每个分支条件分解,形成新函数」还可以给你带来更多好处:可以突出条件逻辑,更清楚地表明每个分支的作用,并且突出每个分支的原因. Consolida

重构改善既有代码的设计--简化条件表达式

一 简化条件表达式 这个是几乎所有的工程都会存在的问题,不当的条件表达式造成代码的冗余. 下面我们列出普遍的问题,并给出一般的应对方法. [1]条件判断过长,表达不清晰. if((i!=0&&i == m_nDClickIndex[1])&&(m_nDClickIndex[1]!=m_nDClickIndex[0])) { .... } 解决办法:将很长的判断式子封装成函数或者定义成宏.并以一个清晰表达意图的名字命名,这种做法在现代oop语言中很常见,比如 java c#

重构摘要10_简化函数调用

<重构-改善既有代码的设计>Martin Fowler 摘要: 第十章 简化函数调用 Rename Method 函数改名 改一个自表达的名字吧!骚年 Add Parameter 添加参数 某个函数需要从调用端得到更多信息. 为此函数添加一个对象参数,让该对象代价函数所需信息.并发编程大多数参数很长,不放在一个类中,因为这样你可以保证传递给函数的参数都是不可修改的. Remove Parameter 移除参数 移除不必要的某个参数 Separate Query from Modifier 将查

Simplifying Conditional Expressions(简化条件表达式)

1.Decompose Conditional(分解条件表达式) 2.Consolidate Conditional Expressions(合并条件表达式) 3.Consolidate Duplicate Conditional Fragments(合并重复的条件片段) 4.Remove Control Flag(移除控制标记) 5.Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件表达式) 6.Replace Conditiona

学习重构(5)-简化条件表达式

1.Decompose Conditional (分解条件表达式)应用场景:你有一个复杂的条件(if-then-else)语句.从if.then.else三个段落中分别提炼出独立函数.示例:if (date.before(SUMMER_START) || date.after(SUMMER_END)) { charge = quantity * mWinterRate + mWinterServiceCharge;} else { charge = quantity * mSummerRate;

简化条件表达式之以卫语句取代嵌套条件表达式(Replace Nested Conditional With Guard Clauses)

函数中的条件逻辑使人难以看清正常的执行途径.使用卫语句表现所有特殊情况. 动机:条件表达式通常有2种表现形式.第一:所有分支都属于正常行为.第二:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况. 这2类条件表达式有不同的用途.如果2条分支都是正常行为,就应该使用形如if…..else…..的条件表达式:如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回.这样的单独检查常常被称为“卫语句”. Replace Nested Conditional with

【重构学习】08 条件表达式的重构

所谓条件表达式,就是分支语句,去掉分支语句咯 1.分解条件表达式 修改点:你有一个复杂的条件语句(就是if else语句) 做法:将条件表达式的三个部分分别提炼出独立函数 即 if (A部分) { B部分; } else { C部分; } 这三个部分都提炼成函数就好了. 2.合并条件表达式 修改点:你有一系列测试,都得到相同结果 做法:将这些测试合并成一个条件表达式,并将这个表达式提炼成一个独立函数 3.合并重复的条件片段 修改点:在条件表达式的每个分支上有着相同一段代码 做法:将这段重复代码搬

简化条件表达式之移除控制标记(Remove Control Flag)

在一系列布尔表达式中,某个变量带有“控制标记’的作用.以break或return语句取代控制标记. 动机:在一系列条件表达式中,常常会看到用以判断何时停止条件检查的控制标记.这样的标记带来的麻烦超过了它所带来的便利.人们之所以会使用这样的控制标记,因为结构化编程原则告诉他们:每个子程序只能有一个入口和出口.“单一出口“原则会让你在代码中加入让人讨厌的控制标记,大大降低条件表达式的可读性.这就是编程语言提供break和continue语句的原因:用它们跳出复杂的条件语句.去掉控制标记所产生的效果往