演化架构与紧急设计: 测试驱动设计,第2部分 - 编程入门网
把因子加起来。
我需要确定某个数字是不是完全数。 还没有完成的两个任务是把因子加起来和判断完全数。这两个任务很简单;最 后两个测试见清单 5: 清单 5. 完全数的最后两个测试
演化架构与紧急设计: 测试驱动设计,第2部分(4)时间:2011-05-18 IBM Neal Ford在 Wikipedia 上查找到前几个完全数之后,我可以编写一个测试,它检查实 际上是否可以找到完全数。但是,这还没有完。肯定测试只是工作的一半儿。还 需要编写另一个测试,确保不会意外地把非完全数分类为完全数。因此,我编写 了清单 6 所示的否定测试: 清单 6. 确保完全数分类正确的否定测试
这段代码报告我的完全数算法工作正常,但是它非常慢。通过查看 calculateFactors() 方法(清单 7),我可以猜出原因。 清单 7. 最初的 getFactors() 方法
清单 7 中出现的问题与 第 1 部分 中后测试版本中的问题相同:寻找因子的 代码会一直循环到数字本身。可以通过成对地寻找因子来改进此代码,这样就只 需要循环到数字的平方根,重构的版本见清单 8: 清单 8. calculateFactors() 方法的性能更好的重构版本
演化架构与紧急设计: 测试驱动设计,第2部分(5)时间:2011-05-18 IBM Neal Ford这与在后测试版本中做过的重构相似(见 第 1 部分),但是这一次要修改两 个不同的方法。这里的修改更简单,因为我已经把 addFactors() 功能放在一个 单独的方法中了,而且这个版本使用 Set 抽象,这样就不需要通过测试确保没有 出现在后测试版本中曾经出现的重复。 优化的指导原则应该总是先确保它正确,然后加快它的运行速度。全面的单元 测试集能够轻松地检查行为是否正确,让开发人员能够专心地优化代码,而不必 担心是否会破坏代码的正常行为。 最后,完成了完全数查找程序的测试驱动版本;完整的类见清单 9: 清单 9. 数字分类程序的完整 TDD 版本
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |