• 重构泄露的逻辑而不仅仅是修bug - [Agile]

    2008-10-12

    修bug时我们都有这样的经历:简单查看了一下代码,发现没有那个类负责这个逻辑,进一步深入代码,查找一番,才在一个看似不相关的地方找到了错误的根源。原来这个逻辑被散落在几个地方,隐讳地错误实现了。我们在出错的地方多加一个if else,或是写点别的什么代码,这个bug就这样被fix了。

    仅仅这样做虽然提高了软件的外部质量,但对内部质量的提高毫无益处,泄漏在外的逻辑不仅仍然无家可归,而且有变得越加复杂和晦涩的倾向。

    每一个bug的出现都是对分析、设计和编码过程的一次质疑。这次我们要问几个为什么了。为什么没有测试保证这个逻辑?是忘记实现了还是基于现有的设计很难写一个满意的测试?为什么到一个看似无关的地方改点东西就能fix这个bug? 为什么出错的地方那么难找?种种迹象表明,这个逻辑被泄露出去了,没有被封装起来,是时候对相关代码做个重构,充实一下现有的对象,将逻辑封装起来,或是创建新的对象,并通过对象间的合作实现这个逻辑。

    因此,在表面上将错误修正固然必要,但更重要的是将泄露的逻辑重构到合适的地方,改进设计,提升软件的内部质量,让问题不再重现。

     


    收藏到:Del.icio.us