Если у вас есть код типа «поиск», вы можете упаковать предложение 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 между вводом и выводом, как в вышеупомянутой вещи (ролевые игры полны их, я уверен, что они существуют в других "бизнес" тоже): D
С другой стороны, если предложение case более сложное или что-то происходит после оператора switch, я бы не рекомендовал использовать в нем return, а скорее установил бы переменную в переключателе, завершил его перерывом и вернул значение переменной в конце.
(С ... третьей стороны ... вы всегда можете реорганизовать переключатель в его собственный метод ... Я сомневаюсь, что это повлияет на производительность, и меня не удивит, если современные компиляторы могут даже распознать его как что-то, что может быть встроено ...)
continue
илиgoto
- идиоматично использовать их вместоbreak
.