代码重构梳理-实践篇(中)

第三步:提高代码的复用率

代码优化,采取“小步快跑”的方式,遵循“DRY(不要重复自己)”原则。

检查工具
  建立版本控制服务器(如SVN),在此基础上建立持续集成服务器(Jenkins)。在建立持续集成服务器的过程中,加入一些静态代码检查工具(如PMD、FindBugs、Checkstyle等等)

方法
1、当重复代码存在于同一对象中时-抽取方法

2、当重复代码存在于不同对象中时
  2.1、-抽取类
  如工具类(解决代码变更中的“散弹枪式修改”问题)
  2.2、-封装成实体类
  当重复代码内部存在较强的业务相关性时,实体类应当体现这种业务相关性。(实体类-属性、构造函数)
  
3、当代码所在类具有某种并列关系时-抽取父类

4、当出现继承泛滥时-将继承转换为组合
  将代码不同的部分封装到一个统一接口下的多个实现类中,相同的部分合并到业务类中。
  
5、当重复代码被割裂成碎片时-继承结合模板模式
  模板模式:定义一系列步骤,允许子类实现其中一个或多个步骤时。


第四步:发现程序的可扩展点

重构节点控制:按时间节点来规划,在节点结束时打基线,形成一个独立的版本。

1、OCP(开放-封闭)原则:对功能扩展开放,使其满足新需求;对软件代码的修改是封闭的。将原有代码与新代码有效隔离,所以要实现新功能,采取添加新类的方式。尽管如此,还是会在原有代码上动刀子,此时应该遵循“两顶帽子”的设计原则:先重构原有代码,使其具有可扩展功能,然后再添加新程序,使其满足OCP原则。
  适用场景:if-else或者switch这样的条件切换语句中。
  
2、过程的扩展与放置钩子-运用模板模式增加可扩展点
  钩子-空函数。钩子放在抽象类中,具有非常大的作用。抽象类的子类可以对它进行重载,完成所需的功能;也可以什么都不做。
  适用场景:拥有相似操作步骤的一系列操作中。
  
3、面向切面的可扩展设计
  利用spring框架提供的AOP配置功能-拦截器
  适用场景:某些操作前后有不确定的前置或后续操作。
  
4、其他可扩展设计
  继承:当某个对象不能满足我们的需求时,为了满足OCP原则又不能修改原程序,比较好的方法是对该对象继承一个子类,在子类中进行修改,以满足新的需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值