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

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

 2009-11-05 00:00:00 来源:WEB开发网   
核心提示: 清单 8. 简单的 factorsFor() 方法publicstaticint[]factorsFor(intnumber){returnnewint[]{number};}虽然这个方法可以工作,但是它使我完全停了下来,演化架构与紧急设计: 测试驱动设计,第 1 部分(7),将 isFacto


清单 8. 简单的 factorsFor() 方法
public static int[] factorsFor(int number) { 
  return new int[] {number}; 
} 

虽然这个方法可以工作,但是它使我完全停了下来。将 isFactor() 方法变成静态方法似乎是个好主意,因为它只不过根据其输入返回一些内容。但是,现在我也已经使 factorsFor() 方法成为了静态方法,意味着我必须将名为 number 的参数传递给两个方法。这段代码将变得非常过程化,这是过分使用静态的副作用。为了解决此问题,我将重构已有的两个方法,这很简单,因为到目前为止我只有很少的代码。重构后的 Classifier 类显示在清单 9 中:


清单 9. 改进后的 Classifier 类
public class Classifier2 { 
  private int _number; 
 
  public Classifier2(int number) { 
    _number = number; 
  } 
 
  public boolean isFactor(int factor) { 
    return _number % factor == 0; 
  } 
} 

我把数字变成是 Classifier2 类中的成员变量,这将允许我避免将其作为参数传递给一大堆静态方法。

我的分解列表中的下一件事表明我需要找到数字的因子。因此,我的下一个测试应当检查这一点(如清单 10 中所示):


清单 10. 下一个测试:数字的因子
@Test public void factors_for_6() { 
  int[] expected = new int[] {1, 2, 3, 6}; 
  Classifier2 c = new Classifier2(6); 
  assertThat(c.getFactors(), is(expected)); 
} 

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

Tags:演化 架构 紧急

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