fail("IllegalArgumentException not thrown");
}
catch(IllegalArgumentException e)
{
assertEquals("Not a valid card value 1", e.getMessage());
}
try
{
hand.add(12);
fail("IllegalArgumentException not thrown");
}
catch(IllegalArgumentException e)
{
assertEquals("Not a valid card value 12", e.getMessage());
}
}
我们加入了下面的实现来通过测试。
public void add( int card )
{
if(card < 2 || card > 11)
throw new IllegalArgumentException("Not a valid card value " + card);
cards.add(new Integer(card));
}
但是现在我们在Deck和Hand里有相同的guard语句,用来检查该自变量是否代表着正确的纸牌值。简单性的原则要求我们删除重复,但是在这里情况并不像Extract Method重整6这么简单。如果我们看到多个类之间存在重复,这意味着我们缺失了某种概念。在这里我们很容易就看到Card类担负起了判断什么值是有效的责任,而Deck和Hand作为Card的容器变得更具沟通性。
我们引入了Card类以及相应的Deck和Hand重整,如列表B:
文章来源于领测软件测试网 https://www.ltesting.net/