Se hai un tipo di codice "lookup", potresti impacchettare la clausola switch-case in un metodo a parte.
Ne ho alcuni in un sistema "hobby" che sto sviluppando per divertimento:
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;
}
}
(Sì. Questo è lo spazio GURPS ...)
Sono d'accordo con altri sul fatto che nella maggior parte dei casi dovresti evitare più di un ritorno in un metodo, e riconosco che questo potrebbe essere stato implementato meglio come array o qualcos'altro. Ho appena scoperto che switch-case-return è una corrispondenza piuttosto semplice con una tabella di ricerca con una correlazione 1-1 tra input e output, come la cosa sopra (i giochi di ruolo ne sono pieni, sono sicuro che esistono in altri anche "imprese"): D
D'altra parte, se la clausola case è più complessa, o succede qualcosa dopo l'istruzione switch, non consiglierei di usare return in essa, ma piuttosto impostare una variabile nello switch, terminarla con una pausa e return il valore della variabile alla fine.
(Sulla ... terza? Mano ... puoi sempre rifattorizzare uno switch nel suo metodo ... dubito che avrà un effetto sulle prestazioni, e non mi sorprenderebbe se i compilatori moderni potessero persino riconoscerlo come qualcosa che potrebbe essere inline ...)
continue
ogoto
- è idiomatico usarle al posto dibreak
.