“你给软件新加的功能A不错,能够让系统的性能大幅度提升。”
“谢谢!老板,我会不断努力的……”
“可是,据测试人员说,有的时候它会导致系统不是很稳定。你知道,客户催得很紧急,他们需要一个稳定的版本。你看,你能不能暂时把这个模块屏蔽掉?”
“!@#¥ 好的,我可以在SVN上把代码回滚到以前的版本。可是,最近在源代码树上,又提交了很多不涉及模块A的代码,如果回滚,这些代码势必也要被去掉……”
“不行!这些代码是修复以前的BUG的,不能去掉。任务紧张,限你一天之内完成!!!”
于是,我只有不断地比较版本,合并版本,不断寻找编译的错误,同时还要不断地调试……真正的超负荷体力劳动。
以上的情形,在软件开发当中经常可以遇到。新功能和稳定性有时是互相冲突的。但是,客户的需求又是漂移不定的。作为开发人员,如何做到既不影响自己的进度,又能尽可能满足客户的需求呢?个人认为,通过给新功能模块添加一个简单的开关,在大部分情况下,可以很好地解决这个问题。添加功能开关有两种,一种是在程序运行时的动态设置开关,另外一种是在源代码编译时生效的静态开关。
1. 动态开关
在编译之后的代码里面就已经包含了新功能A,通过一个特殊的开关可以禁止或使能它(如果是应用程