最近公司的公司的项目都是由敏捷的方式开发的,所以大家都遵循简单的原则,开发的时候都以简单的方式实现,只有在必要的时候进行重构。但是,项目进行了半年以后,我发想我们的项目已经朝着重复代码的方向牢牢进发。
经过了解以后我发现,这个问题的主要原因是大家没有认真的进行重构这项工作。仔细了解我发现大家的回答是怕破坏项目现有的功能,这其中当然有我们的开发人员都很年轻的原因。但是我想最主要的还是由于项目没有将测试驱动和重构结合起来。
本人认为在敏捷中重构必须要和测试驱动牢牢绑定,否则再牛的程序员在重构时也也有可能遗漏某些方面,破坏项目的既有功能。
再回到我们的项目,当提到测试驱动的时候,大家的反应就是不太现实。应为很多功能不能写出测试用例,最明显的就是页面某个按钮什么可用不可用。起初我也是十分同意这个观点。
但是经过后期的思想斗争后,我发现这个观点完全是错的:
导致类似上面的问题是,我们没有很好的将软件进行合理分层。还是那页面按钮什么时候可用的例子来说,我们就不应该把这个判断的逻辑写在View层,而应该写在BLL层,View只是调用BLL层相应的函数,然后根据的返回值设定状态。那么我们就可对BLL层的函数加上测试函数。所以我感觉只要分层合理,大家严格执行,我们其实只要对BLL以下做测试驱动就可以了,view层貌似没有必要做测试驱动。
总之一句话,在敏捷中重构是比不可少的,那么与之绑定的测试驱动也是必不可少的。
以上仅仅代表个人观点。