分析、思考、重构

   在平时的开发中,我们总是习惯于使用过程化的思维方式来编写代码,没有通过开发高内聚的方法,来结构化自己的思维,从而消除逻辑重复,逻辑复用不仅仅是指在一个平面内的逻辑复用,更应该是一种结构化的逻辑复用。下面,我用平时开发过程中一个重构的过程,来做一个描述。
   假设,现在有三个类,如下图所示:
  




在这三个class中,分别有三个重复的属性:a, b, c, 而且这三个属性具有相关性,对应于一个功能的具体实现,
而这个具体实现,分别分布在了三个不同的业务中。首先,从这三个不同业务实现类中,抽取出一个基类。需要说明的是对于spring这样的使用注解方式,来注入依赖关系的,基类注解的关键字是:@MappedSuperclass


 

在功能处理类FunctionHandler类中,对这个功能的具体实现做处理,如下图:





参数的类型是 ABC,而不是A或B或C。利用继承或者多态,结构化地消除重复逻辑并复用。开发高内聚的方法,我个人认为对于消除重复逻辑,是很重要的。而高内聚的方法,肯定是存在于一个结构中的。应尽量避免使用过程化的思维习惯来开发软件,使用结构化的面向对象的方式来思考。消除重复的逻辑,获得变化空间!
    最后,我认为是《测试驱动开发》,《卓有成效的程序员》给我了这样的启发,感谢Kent Beck!

猜你喜欢

转载自lihx.iteye.com/blog/1605838