Если у вас есть код типа «поиск», вы можете упаковать условие switch-case в метод сам по себе.
У меня есть несколько таких в системе «хобби», для которой я разрабатываюПриколы:
private int basePerCapitaIncomeRaw(int tl) {
switch (tl) {
case 0: return 7500;
case 1: return 7800;
case 2: return 8100;
case 3: return 8400;
case 4: return 9600;
case 5: return 13000;
case 6: return 19000;
case 7: return 25000;
case 8: return 31000;
case 9: return 43000;
case 10: return 67000;
case 11: return 97000;
default: return 130000;
}
}
(Да. Это пробел GURPS ...)
Я согласен с другими, что в большинстве случаев вам следует избегать более одного возврата в метод, и я признаючто этот мог бы быть лучше реализован как массив или что-то еще.Я только что обнаружил, что switch-case-return довольно легко соответствует таблице поиска с соотношением 1: 1 между входом и выходом, как и в предыдущем примере (в ролевых играх их полно, я уверен, что они существуют в других«business»): D
С другой стороны, если предложение case более сложное или что-то происходит после оператора switch, я бы не рекомендовал использовать в нем return, а вместо этого установитьпеременную в переключателе, завершите ее с помощью break и верните значение переменной в конце.
(С третьей стороны ... вы всегда можете сделать рефакторинг переключателя в его собственноеметод ... я сомневаюсь, что это повлияет на производительность, и меня не удивит, если современные компиляторы смогут даже распознавать это как нечто, что может быть встроено ...)