在软件开发过程中常常会遇到增加feature或改变需求的尴尬境况,特别是在原先的代码在结构上还是比较合理且稍微有些复杂。这里仅仅记录一下自己在开发过程中遇到的一种情况。
【背景】
在所开发的一个自动化文档检查的程序,现在的情况是需要添加一个开关控制项,通过该控制项可以改变程序的检查逻辑。
【问题】
以verify(arg1,arg2)为例,其内部的逻辑是紧凑合理的,此时如果为支持开关控制项而改成verify(arg1,arg2,bool)的话,不仅需要改动该函数,与此相关的所有的类对其的调用都必须改变,而且由此而引起的回归测试也是一个expensive cost.
【解决方案】
可以为verify(arg1,arg2)函数所在的类Validator添加一个属性boolean filter; 这样的话只需改动verify函数本身即可,通过filter的getter和setter函数支持对开关项的访问。