我们从系统思维的角度来看一下遗留代码的修改方案。
首先是遗留代码容易出现的问题。
任何代码的修改都需要基于一个原则,那就是保证现有功能的不变。
这是一个难点,越是大的系统,修改起来就越难,由此,开发团队在应对代码修改时往往会选择保守,能不动就不动,这又进而导致第二个问题,代码出现冗余。
基于系统的增强回路原理,冗余越多,冗余的增加量就越多,再加上复杂系统具有反馈延迟的特性,等开发团队意识到代码已经难以维护的时候,一切就晚了。这个时候常见的手段就是引入一个新技术,借此推倒重来了。
其次,关于修改代码的方案,从系统思维的角度来看。
据系统组成:元素、关系、功能
为了保证现有功能的不变,我们需要引入单元测试。由此,这个系统最终包含两方面的元素,一是被改动的代码,二是被添加的单元测试。
而他们之间的关系,即功能代码与功能代码之间,功能代码与测试代码之间的关系,则需要考量,或者我们用软件开发中的术语-依赖。
那么首先要解决的问题就是确定改动哪里和测试哪里。
然后确定他们之间的依赖。
再根据测试驱动开发(TDD)的原则,我们需要先编写测试。