重构36计(1-6)
重构,其实很简单,它的目的就是让程序变得更容易被理解,更具有可维护性,结构更合理。重构应该是我们平时写代码过程中必不可少的一部分,比如给函数起了一个更好的名字、把大函数拆分成几个小函数等都属于重构。重构的经典书籍包括Martin Flower的《重构-改善既有代码的设计》、Joshua Kerievsky的《重构与模式》,本系列的所谓36计是我多年来使用最为频繁的重构策略和编码准则,有自己总结的,也有书上提到过的,希望对大家能有所帮助。
第一计:参数列表对象化
公有函数的参数应尽可能保持不变,因为很多地方都会调用它,修改参数后需要修改它的调用处,另外,它的参数列表不宜过长,数量尽量保持在5个以内,长参数列表会增加该函数的调用难度。对于参数较多或者参数经常变化的公有函数,较好的办法是引入参数对象,即该函数的参数只有一个,它就是参数对象,具体的参数都在该对象中声明,为函数引入参数对象有以下几个好处:
1、保持函数接口的不变性,修改函数参数只需修改参数对象中的成员变量。
2、调用方便,调用方不用再关心参数的顺序。
以下代码片段是一个添加用户函数的声明:[/size]
// 表示集合的类public class Collection{ // 添加元素到集合中 public void addElement(Element e){}; // 获取指定位置的元素 public void getElement(int index){}; }// 表示只读集合的类public class ReadOnlyCollection extends Collection{ // 添加元素到集合中 public void addElement(Element e){ throw new UnsupportedOperationException("只读集合,不允许添加元素"); } // 获取指定位置的元素 public void getElement(int index){};}