重构-改善既有代码的设计(1)
1,建立可靠地测试环境
2,寻找要重构的代码(函数或者类)
一般为比较长的函数,或者逻辑混乱的类
3,重构后的函数要修改局部变量,增加程序的可读行
4,函数应该放在它所使用的数据的所属对象内;
(函数搬迁)
5,尽量剔除临时变量
6,不要在另一个对象的属性基础上运用switch语句,如果不得不使用,页应该在对象自己的数据上使用,而不是别人的数据上使用
7,将子类型和父类型进行继承操作,来实现多态操作(Movie提取三个子类)
8,将相同类型的不同部分以最小单位提取成类(Movie的price 提取成三个子类)
9,提取抽象类(Price)
什么时候重构?
为什么重构?
重构后的好处?
1,重复代码
①两个函数中有两处使用同一表达式---提炼函数,让这两个函数同时调用提炼出来的函数
②两个兄弟类中有两处使用同一表达式----将函数提炼到超类中,子类调用超类函数
2,代码过长
原则:每当感觉需要以注释来说明点什么的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途命名。我们可以对一组甚至短短一行代码做这件事,只要函数名能够表达其用途,我们就应该毫不犹豫的这么做
① 避免使用临时变量,因为这样做对程序的可读性得不到任何提升
②
③
3,如何确定该提炼哪一段代码呢?
① 以个很好的技巧是:寻找注释。
他们通常能指出代码用途和实现手法之间的语义距离..
如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数。
而且可以在注释的基础上给这个函数命名。就算只有一行代码页应该这么做
②条件表达式和循环页是提炼的信号
循环可以和其内的代码提炼成一个独立的函数,
条件表达式可以使用分解条件来提取函数
4,过大的类
①单个类干的事情太多将带来灭亡。