WEB开发网
开发学院软件开发Java 演化架构与紧急设计: 测试驱动设计,第 2 部分 阅读

演化架构与紧急设计: 测试驱动设计,第 2 部分

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 可组合的方法第 1 部分 中提到的测试驱动开发的好处之一是可组合性,也就是采用 Kent Beck 提出的组合方法模式,演化架构与紧急设计: 测试驱动设计,第 2 部分(8),组合方法可以用许多内聚的方法构建软件,TDD 能够促进这种做法,(这对于 isPerfect() 方法没有害处,但是现在

可组合的方法

第 1 部分 中提到的测试驱动开发的好处之一是可组合性,也就是采用 Kent Beck 提出的组合方法模式。组合方法可以用许多内聚的方法构建软件。TDD 能够促进这种做法,因为为了进行测试,必须把软件分解为小的功能块。组合方法生成可重用的构建块,有助于产生更好的设计。

在 TDD 驱动的解决方案中,方法的数量和名称反映了这种思想。下面是 TDD 完全数分类程序的最终版本中的方法:

isFactor()

getFactors()

calculateFactors()

addFactor()

sumOfFactors()

isPerfect()

下面通过一个示例说明组合方法的好处。假设您已经编写了完全数查找程序的 TDD 版本,而您公司中的另一个开发组编写了完全数查找程序的后测试版本(第 1 部分 中有一个示例)。现在,您的用户慌慌张张地跑来说,“我们还必须判断盈数和亏数!” 盈数 的因子的总和大于数字本身,而亏数 的因子的总和小于数字本身。

在后测试版本中,所有逻辑都放在一个方法中,他们必须重写整个解决方案,把盈数、亏数和完全数都涉及的代码分离出来。但是,对于 TDD 版本,只需要编写两个新方法,见清单 10:


清单 10. 支持盈数和亏数
public boolean isAbundant() { 
  calculateFactors(); 
  return sumOfFactors() - _number > _number; 
} 
 
public boolean isDeficient() { 
  calculateFactors(); 
  return sumOfFactors() - _number < _number; 
} 

这两个方法所需的惟一任务是把 calculateFactors() 方法重构为类的构造函数。(这对于 isPerfect() 方法没有害处,但是现在它在所有三个方法中重复出现,因此应该重构)。

上一页  3 4 5 6 7 8 9  下一页

Tags:演化 架构 紧急

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接