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:
文章來源于領測軟件測試網 http://www.kjueaiud.com/