1、Rename Method(函数改名)
2、Add Parameter (添加参数)
3、Remove Parameter(移除参数)
4、Separate Query from Modifier(将查询函数和修改函数分离)
某个函数即返回对象状态值,又修改对象状态,这样子的话,建议建立两个不同的函数,其中一个负责查询,另一个负责修改。
5、Parameterize Method(令函数携带参数)
若干函数 做了类似的工作,但在函数本体中却包含了不同的值,可以建立单一函数,以参数表达那些不同的值。
6、Replace Parameter with Explicit Methods(以明确函数取代参数)
有一个函数,其中完全取决于参数值而采取不同行为,针对该参数的每一个可能值,建立一个独立函数。
7、Preserve Whole Object (保持对象完整)
你从某个对象中取出若干值,将它们作为某一次函数调用时的参数。可以改为传递整个对象。
8、Replace Parameter with Method(以函数取代参数)
对象调用某个函数,并将所得结果所谓参数,传递给另一个函数。而接受该参数的函数本身也能够调用前一个函数。让参数接受者去除该项参数,并直接调用前一个函数。
查看函数是否可以通过其他途径获得参数值,如果可以则可以考虑减少函数中的参数。在函数中通过调用函数获取参数值。
9、Introduce Parameter Object(引入参数对象)
如果某些参数总是很自然的同时出现,则可以考虑创建一个对象来取代这些参数。
10、Remove Setting Method(移除设值函数)
类中的某个字段在对象创建时被设值,然后就不再改变,去掉该字段的所有设值函数。
11、Hide Method(隐藏函数)
如果类中有一个函数,从来没有被其他任何类用到,则将这个函数改为private
12、Replace Constructor with Factroy Method(以工厂函数取代构造函数)
例子:
根据字符串创建子类对象
以明确函数创建子类
13、Encapsulate DownCast(封装向下转型)
某个函数返回的对象,需要由函数调用者执行向下转型(downcast)
例子:
14、Replace Error Code With Exception(以异常取代错误码)
做法
15、Replace Exception with Test(以测试取代异常)