前几天一位同事X说起他对一个测试工具的改动,另几位同事觉得改法欠妥,大致认为他的改法比起惯用做法会增加额外的复杂度,后来我们又做了一些讨论,以下内容源自此次讨论以及后来我的一些想法。
X后来提出一个观点是 这个程序本身并不复杂,所以这样做即使增加了更多复杂度但也不会带来什么问题。
我当时是用“最小惊讶原则”来回答他的,但后来想想并不是十分贴切。用以下内容应该更适合些:
首先,你不知道以后会有什么“变态”的需求,而如果现在就随意增加复杂度等真的“变态”需求到来时,可能会使你完全不知所措;
其次,假设惯用做法只对A模块复杂度+2,而他的做法会让A、B、C模块复杂度各+1(这里将复杂度简化为线性的且各模块之间是可累加),这样的话他的做法就会使程序的复杂度多+1。如果后面有人维护这个功能的话,本来可以2个小时做完的事情则可能会变成3个小时或更多,多出的一个小时做点更有意义的事情不是更好