《重构-改善既有代码的设计》读后感

来源:互联网 发布:端口定义 编辑:程序博客网 时间:2024/05/19 02:03

何时重构:

1,需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个程序,使特性添加比较容易进行。



如何重构:

1,找到函数内的局部变量和参数。分成可变和不可变。

任何不可变的变量都可以当成参数传入新的函数,

如果只有一个变量会被修改,那么可以把它当成返回值。


2,绝大多数情况下,函数应该放在它所使用的数据的所属对象内,这样可以减少传参。


3,如果旧函数是一个public函数,而我又不想修改其他类的接口,我会保留旧函数,让它调用新函数。


4,用多态取代条件分支:

租片子计算费用需要两项数据:租期长度和影片类型。为什么要将租期长度传给movie对象,而不是将影片类型传给rental对象呢?因为本系统可能发生的变化是加入新影片类型,这种变化不稳定。如果影片类型有所变化,我们希望尽量控制它造成的影响,所以在movie对象内计算费用。然后

对movie对象使用多态。每个类都有自己的计费法。


但是一部影片可以在生命周期内修改自己的分类,一个对象却不能在生命周期内修改自己所属的类。这时运用state模式。对movie类里添加price类引用。

有了这一层,我们可以在price对象内进行子类化动作。也可以在必要时刻修改价格。


5,针对外界变化所有应有修改,都只应该发生在单一类中。


6,先用解释型变量理清思路,用方法替代变量,抽取方法。


7,每个变量只能承担一个责任。


8,switch,if条件的语句移动到需要被继承的类中,这样才能利用多态消除switch语句。


重构注意事项:

每次修改的幅度都要小,所以任何错误都很容易发现。

0 0
原创粉丝点击