Se você tiver o tipo de código "lookup", poderá empacotar a cláusula switch-case em um método por si só.
Eu tenho alguns desses em um sistema de "hobby" que estou desenvolvendo para me divertir:
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;
}
}
(Sim. Esse é o espaço GURPS ...)
Concordo com os outros que você deve, na maioria dos casos, evitar mais de um retorno em um método e reconheço que este poderia ter sido melhor implementado como um array ou outra coisa. Acabei de descobrir que switch-case-return é uma combinação muito fácil para uma tabela de pesquisa com uma correlação de 1-1 entre entrada e saída, como a coisa acima (jogos de RPG estão cheios deles, tenho certeza de que existem em outros "negócios" também): D
Por outro lado, se a cláusula case for mais complexa, ou algo acontecer após a instrução switch, eu não recomendaria usar return nela, mas sim definir uma variável na switch, terminar com uma pausa e retornar o valor da variável no final.
(Por outro lado ... você sempre pode refatorar um switch em seu próprio método ... Duvido que tenha um efeito no desempenho, e não me surpreenderia se compiladores modernos pudessem reconhecê-lo como algo que poderia ser embutido ...)
continue
ougoto
- é idiomático usá-las no lugar debreak
.