重构第十章
总结
本章主要讲解了如何简化函数的调用,开发出更加容易理解和容易使用的接口的重构方法
1.Rename Method(重新命名函数):为接口重新起一个更加容易理解的名称。
2.Add Parameter(添加参数):根据实际需求需要增加传入的参数。
3.Remove Parameter(移除参数):根据实际需求删除不需要传入的参数。
4.Separate Query from Modifier(将查询函数和修改函数分离):将修改对象状态的函数和查询对象状态的函数分离开。
5.Paraneteruze Method(令函数携带参数):合并行为相同,只有参数不同的函数。
6.Replace Parameter with Explicit Methods(以明确函数取代参数):根据参数有不同的行为时,根据每个参数写一个不同的函数。
7.Preserve Whole Object(保持对象完整):传入整个对象,防止之后的业务修改。
8.Replace Parameter with Methods(以函数取代参数):通过使最终的函数直接调用其他函数获得参数,减少参数的传递。
9.Introduce Parameter Object(引入参数对象):用一个对象取代多个参数。
10.Remove Setting Method(移除设值函数):使这些值只通过初始化赋值。
11.Hide Method(隐藏某个函数):隐藏不需要公开的函数。
12.Replace Constructor with Factory Method(以[工厂函数]取代[构造函数]):使用工厂函数取代构造函数,对用户隐藏子类。
13.Encapsulate Downcast(封装[向下转型]动作):将类型转换放在函数内部,明确给出类型。
14.Replace Error Code With Exception(以异常取代错误码):对于很少发生的情况,或者本身不应发生的情况,可以使用异常处理来代替返回值。
15.Replace Exception with Test(以测试取代异常):对于经常发生的情况,可以预先检查,而不是使用异常处理。
读书第一遍重构思路
Rename Method(重新命名函数)使得使用者更加明确该函数、接口的作用。
Add Parameter(添加参数)根据业务叠加,需要新加入其他的参数,使用这种方法;Remove Parameter(移除参数)是相反的方法,移除掉不需要的参数。对参数进行操作的时候,我们要知道过长参数对程序理解方面的障碍。
Separate Query from Modifier(将查询函数和修改函数分离)方法可以避免两种函数混在一起导致的各种麻烦。
Paraneteruze Method(令函数携带参数)为函数添加参数,然后合并其他重复的代码。
Replace Parameter with Explicit Methods(以明确函数取代参数)如果函数需要的参数可以通过另一个可调用的函数获得,直接调用该函数,不需要外部传入,减少参数长度。
Preserve Whole Object(保持对象完整)和Introduce Parameter Object(引入参数对象)都是使用对象去简化参数列表的方法,方法一是为了接口可以更好地扩展;方法二是减少参数列的长度。
Remove Setting Method(移除设值函数)和Hide Method(隐藏某个函数)减少了接口的数量,使得不必要的接口不会暴露在用户面前。
Replace Constructor with Factory Method(以[工厂函数]取代[构造函数])和Encapsulate Downcast(封装[向下转型]动作)方法对用户隐藏了子类的构造。方法一通过type_code可以获得相应的子类实例,隐藏了子类的实现;方法二隐藏了对子类的类型转换,一切以接口提示为准。
Replace Error Code With Exception(以异常取代错误码)和Replace Exception with Test(以测试取代异常)是对于特殊情况的处理方法。其中前者,是对于不常见的异常的处理方法;后者是对经常可能遇到特殊情况的处理。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论