软件开发中的测试、模式与设计实践
1. 单元测试与设计测试性
单元测试是软件开发中的一项重要实践,而测试驱动开发则是近年来新加入的实践方式。当我们对某个情况的清晰度较低时,可以依靠它。测试能帮助我们解决很多问题,下面通过两个问题来探讨测试方面的问题:
1.1 SignalProcessors
- 策略模式(Strategy):若使用策略模式,我们只需测试每个过滤器(Filter)能否对给定数据完成其工作。
- 职责链模式(CoR):若使用职责链模式,每个过滤器的测试需要图形用户界面(GUI),因为我们必须确保过滤器能正确检查GUI,这是更难的测试。
1.2 PKZip
- 职责链模式(CoR):使用职责链模式时,可以单独测试每个压缩器,看它是否能对正确的数据应用自身并完成正确的操作。
- 策略模式(Strategy):使用策略模式时,顺序依赖关系很难测试,因为它涉及多个压缩器的实现。职责链本身也是一个可测试的实体,给它不同的数据,看是否能得到正确的结果。
从可测试性的角度考虑这些设计,能得出与从各种因素角度看待问题时相同的结论。这是因为可测试性、各种因素、实践和设计原则都源于同一个问题:是什么让软件具有可维护性?
2. 更多选择与更多因素
许多面向对象的技术(如设计模式)源于早期的过程式机制,这些机制用于解决相同的问题,但优势较少且可维护性较差。