次のメソッドのリファクタリングについてアドバイスをお願いします。
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;
}
私が達成したいこと:
- 時間内により多くのグループ/レベルが存在するため、コードがオープン/クローズの原則に従うようにします。
- 「レベル」スイッチ ステートメントの重複を削除します。
- 理想的には、'group' 最上位の switch ステートメントを削除します。