Jeśli masz kod typu „lookup”, możesz spakować klauzulę switch-case w samej metodzie.
Mam kilka z nich w systemie „hobby”, który rozwijam dla przyjemności:
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;
}
}
(Tak. To przestrzeń GURPS ...)
Zgadzam się z innymi, że w większości przypadków należy unikać więcej niż jednego powrotu w metodzie i zdaję sobie sprawę, że ta metoda mogłaby być lepiej zaimplementowana jako tablica lub coś innego. Właśnie odkryłem, że powrót przełącznika wielkości liter jest dość łatwym dopasowaniem do tabeli odnośników z korelacją 1-1 między danymi wejściowymi a wyjściowymi, tak jak powyżej (gry fabularne są ich pełne, jestem pewien, że istnieją w innych „biznes”): D.
Z drugiej strony, jeśli klauzula case jest bardziej złożona lub coś dzieje się po instrukcji switch, nie polecałbym używania w niej return, ale raczej ustaw zmienną w przełączniku, zakończ ją przerwą i zwróć wartość zmiennej na końcu.
(Z drugiej strony… po trzecie… zawsze można zmienić sposób przełączania na jego własną metodę… Wątpię, czy będzie to miało wpływ na wydajność i nie zdziwiłbym się, gdyby współczesne kompilatory potrafiły je rozpoznać jako coś, co można by wstawić ...)
continue
lubgoto
- idiomatyczne jest używanie ich zamiastbreak
.