合并表达式
你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼成一个独立函数。
合并重复的条件代码
在表达式的每个分支上都执行了相同的一段代码。将这段重复代码搬移到条件表达式之外。
移除控制标记
在一系列布尔表达式中,某个变量带有”控制标记”的作用。以break/return语句取代控制标记。
以多态取代条件表达式
有个条件表达式根据对象类型的不同而选择不同的行为。将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数
简化函数调用
函数改名
函数的名称未能揭示其用途。修改函数名称。
添加参数
某个函数需要从调用端得到更多信息。为此函数添加一个对象参数,让该对象带仅函数所需信息。
移除参数
函数本体不再需要某个参数。去除参数。
分离查询函数和修改函数
某个函数既返回对象状态值,又修改对象值。建立两个不同函数,其中一个负责查询,另一个负责修改。
令函数携带参数
若干函数做了类似的工作,但在函数本体中包含了不同的值。建立单一函数,以参数表达那些不同的值。有这样两个函数:它们做着类似的工作,但因少数几个值致使行为略有不同。在这种情况下,你可以将这些各自分离的函数同一起来,并通过参数来处理那些变化情况,用以简化问题。
以明确函数取代参数
你有一个函数,其中完全取决于参数值而采用不同行为。针对该参数的每一个可能值,建立一个独立函数。如果某个参数有多种可能的值,而函数内又以条件表达式检查这些参数值,并根据不同参数值做出不同的行为,那么就应该使用本项重构。
保持对象完整
从某个对象中取出若干值,将它们作为某一次函数调用时的参数。改为传递整个对象。
以函数取代参数
对象调用某个函数,并将所得结果作为参数,传递给另一函数,而接受该参数的函数本身也能够调用前一个函数。让参数接受者去除该参数,直接调用前一个函数。
引入参数对象
某些参数总是很自然的同时出现。以一个对象取代这些参数。
移除设值函数
类中某个字段在对象创建时被设值,然后不再改变。去掉该字段的所有设值函数。
隐藏函数
某个函数,从来没有被其他任何类用到 。将函数修改为private。