补丁式的软件开发方法
这几天我在重构一段代码,大致是将database里面某个字段分离出去,存储到另外一个cache table里面,并且在写回到database的时候进行判断,如果内容和之前完全一样的话就不再写入,减少database的写入压力。
重构这段代码的时候,我发现一旦完成之后,很多其他逻辑是可以优化的。虽然不太能确定带来多少性能提升,但是应该不小。不过修改其他逻辑会不可避免地触碰到一些其他代码,而这些代码现在工作的很好。并且优化这些逻辑还会带来很多额外的工作量,这些工作量的效果很难被量化以及被描述出来。
那么问题是我们是否去优化这段代码呢?还是认为使用类似补丁式的开发方法,只是增加一个patch来fix当前这个问题即可。
主动去优化这段代码的出发点,应该是希望整个系统运行的更加完美。但是这种做法通常会耗费很多时间,并且除非有意量化,否则很难说明最终效果。在实际公司里面,如果还有很多其他开发任务的话,那么通常这个优先级别应该是比较低的,除非当前系统非常不稳定或者是出现了很严重的性能问题。不过一旦系统稍微稳定或者是性能可以忍受的话,开发新的功能点又会重新回到优先级的榜单上的。
如果更加深入分析的话,其实本质还是系统稳定和效率之间的取舍。想要提高效率,那么不可避免地需要修改一些已有的机制,那么系统的稳定性则会收到影响。而如果更加看重稳定性的话,那么最好则尽可能地使用patch的方法进行开发,尽可能地避免对系统伤经动骨,只要当前效率是可接受的就行。
补丁式的软件开发方法也有一定的现实意义。补丁式的软件开发方法强调不断地去完成更多的feature. 使用这种办法的话,会更加强调让自己去接触更多新的东西,而不是花很多的时间去梳理已有的东西。梳理自己已有的知识是必要的,但是必须和接触新东西之间有一个比较好的balance. 一味地梳理已有的东西很难让自己走出舒适区,而一味地去追求新的东西则让自己很难的一个方面成为专家。平衡好两者对于个人工作生活是有很积极的意义。