重构VS重用
软件重用可以说是众多软件方法学的终极目标。在可重用的软件中,组件是一个最基本的重用单元。要想实现软件重用必须从组件重用做起。
如果希望一个组件能够被重用,那么这个组件必须满足两个条件:首先组件通过定义一个明确的接口而被良好的封装;其次组件的功能要足够强大,能够满足特定领域内的需求。要满足第一个条件需要组件的设计者有一定的设计水平,这不是本文讨论的问题,这里简单提一下。而要实现第二个条件并不是什么容易的事,即使开发人员冥思苦想也很难把需求考虑周全,而且开发人员所想的未必就是这个组件真正需要实现的功能。所以,一个组件应该从它初步的需求开始,然后在每一个使用它的应用系统中进行功能迭代,在应用系统中去挖掘合理的需求。
功能迭代是一件很可怕的事情,一不小心你就可能制造出一个难以理解的怪物。首先功能迭代会使功能越来越复杂,其次功能迭代是在原有设计的基础上增加功能,这就不同于重新设计一个复杂的功能组件。当组件进行某一次功能迭代时,如果仅仅只是实现眼前的功能就完事,那么你恐怕很难面对下一次功能迭代,即使勉强实现了功能,组件的可理解性也会不断的下降。当组件的可理解性下降到一定程度时,这个组件也就寿终正寝了。
所以功能迭代必须伴随着重构同时进行,在增加功能的同时,把整个组件重构一下,使它保持一个清晰可理解的对象模型,这样我将可以坦然面对下一次的功能迭代,这个组件也可以不断的发展下去,开发者们才得以继续从事他们热爱的工作。