重构章11

24 阅读2分钟

《重构:改善既有代码的设计(第2版)》 ePUBw.COM 58个笔记

变回普通的函数

如果这个函数不是太复杂

大多数时候,我只是想调用一个函数,让它完成自己的工作就好

动机

11.10

撤销

Replace Command with Function

例如

命令对象提供了更大的控制灵活性和更强的表达能力

将函数封装成自己的对象

动机

Replace Function with Command

11.9

new关键字

需要

无法使用比默认名字更清晰的函数名

函数的名字

无法根据环境或参数信息返回子类实例或代理对象

与一般的函数相比,构造函数又常有一些丑陋的局限性

动机

Replace Constructor with Factory Function

11.8

如果不希望在对象创建之后此字段还有机会被改变,那就不要为它提供设值函数

动机

Remove Setting Method

11.7

权衡

为了让目标函数不再依赖于某个元素,我把这个元素的值以参数形式传递给该函数

动机

Replace Query with Parameter

11.6

Replace Parameter with Query

11.5

“传递整个记录”的方式能更好地应对变化

动机

11.4

Preserve Whole Object

并且能帮助开发工具更好地发挥作用

移除标记参数不仅使代码更整洁

只有参数值影响了函数内部的控制流,这才是标记参数。

只有调用者直接传入字面量值,这才是标记参数

动机

Remove Flag Argument

11.3

以参数的形式传入不同的值,从而消除重复

动机

Parameterize Function

11.2

做法

任何有返回值的函数,都不应该有看得到的副作用

可以任意调用

副作用

没有

如果某个函数

动机

Separate Query from Modifier

◆ 第11章 重构API

第11章 重构API

11.1