我想上重構下面的方法了一些建議:重構嵌套開關對象
public boolean makeDecision(String group, int level, int primaryAmount, int secondaryAmount)
{
if (group.equals("A"))
{
switch (level)
{
case 0 : return primaryAmount > 10000;break;
case 1 : return primaryAmount > 20000;break;
default : return secondaryAmount > 30000; break;
}
}
else if (group.equals("B"))
{
switch (level)
{
case 0 : return primaryAmount > 40000;break;
case 1 : return primaryAmount > 50000;break;
default : return secondaryAmount > 60000; break;
}
}
else if (group.equals("C"))
{
switch(level)
{
case 0 : return primaryAmount > 70000;break;
case 1 : return primaryAmount > 80000;break;
default : return secondaryAmount > 90000; break;
}
}
return false;
}
想我實現:
- 允許代碼遵循開啓/關閉原則,因爲會有更多的團體/級別及時。
- 刪除'level'開關語句中的重複項。
- 理想情況下,刪除「組」頂級開關語句。
我將如何派遣組的類型?你是說我應該爲每個小組分別開一堂課嗎? – Michael
通過派遣,我只是指在組上調用方法。所以上面例子中的'group.GetLevel'。目前,組不是類層次結構,因爲邏輯足夠簡單以適合一個地方。你可以爲每個組寫一個不同的子類,但是由於它們只是在數據而不是行爲上有所不同,所以我不會那樣做。同樣適用於Level。如果真的在行爲上有所不同,我只會添加新的子類。 –