软件边界与单元测试的最佳实践
1. 边界处理
在软件开发中,边界处会发生许多有趣的事情,其中之一就是变化。优秀的软件设计应能在无需大量投入和返工的情况下适应变化。当使用不受我们控制的代码时,必须格外小心,以保护我们的投入,并确保未来的变更成本不会过高。
边界处的代码需要清晰的分离和明确预期的测试。我们应避免让过多的代码了解第三方的具体细节,依赖自己能控制的东西总比依赖无法控制的要好,否则可能会被其反制。
管理第三方边界的方法是在代码中尽量减少对它们的引用。可以像处理 Map 那样对其进行包装,也可以使用适配器将我们理想的接口转换为所提供的接口。这样做能让代码更易于理解,促进边界内外的内部一致性使用,并且在第三方代码变更时减少维护点。
2. 单元测试的发展历程
过去十年,软件开发行业在单元测试方面取得了长足的进步。在 1997 年,几乎没人听说过测试驱动开发(TDD)。那时,大多数人编写的单元测试只是一些临时性的代码,用于确保程序“能运行”。编写类和方法后,会临时拼凑一些代码进行测试,通常是一个简单的驱动程序,允许手动与编写的程序进行交互。
例如,在 90 年代中期为嵌入式实时系统编写的一个简单定时器程序:
void Timer::ScheduleCommand(Command* theCommand, int milliseconds)
其功能是在指定的毫秒数后,在新线程中执行 Command 的 execute
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



