重构读书笔记

年前参加了软件重构的培训,就像老师所说,几天的培训不会有实质的变化,主要的目的是出发更深层次的思考和不断的实践,

现在主要关注以下几种坏味道,等大家都驾轻就熟之后,再尝试去除更多的坏味道


1, duplicated code,重复代码是最常见,丑陋的坏味道,有以下一些解决办法

extract method -》pull up method

template method 这个准则最经常使用

substitute algorithm (这个准则实际中使用的还是比较少的,除非原有代码实在是太混乱了)

extract class


2, long method, 项目中最长的方法将近2000行,

extraact method

replcae temp with query (个人认为,这个完全是为了代码的可读性,当项目庞大的时候,尤其重要)

introduce parameter object (将参数list封装成class)

preserve whole object (传递整个对象,而不是对象中某几个成员,可以达到减少参数个数的目的)

replacemethod with method object (临时变量-》类的成员变量)

重要的切入点:寻找注释,有注释的地方通常可以提炼代码

decompose conditional (把稍微复杂的条件表达式封装成method)


3, long class, 超长的类,让人望而生畏。尤其是长时间的阅读代码,会增加疲劳感

extract class

extract subclass

extract interface(先确定客户端如何使用它们,再做重构,会更有针对性)

如果是GUI class, duplicate observed data, (比如事件模型)


4, long parameter list

replace parameter with method

preserve whole object

introduce paramter object


5, divergant change(发散式变化, 一个class受多种变化影响)

extract class


6, shotgun surgery(霰弹式修改,一种变化引发多个class相应修改)

move method

move field

inline class



重构准则extract class,inline class看起来是相反的,说明一个问题,重构有一个度的问题,软件设计也有一个度的问题,这个度的把握需要case by case来看,没有一个定式准则,只能靠经验来判断,类之前的耦合度,成员变量之间,成员方法之间的关联度与项目的复杂度有关系,并且要根据客户端如何使用来判断决定。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值