Nếu bạn có loại mã "tra cứu", bạn có thể tự đóng gói mệnh đề switch-case trong một phương thức.
Tôi có một vài trong số này trong hệ thống "sở thích" mà tôi đang phát triển cho vui:
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;
}
}
(Đúng. Đó là không gian GURPS ...)
Tôi đồng ý với những người khác rằng trong hầu hết các trường hợp, bạn nên tránh nhiều hơn một phương thức trả về trong một phương thức và tôi nhận ra rằng phương thức này có thể đã được triển khai tốt hơn dưới dạng một mảng hoặc một cái gì đó khác. Tôi chỉ thấy switch-case-return là một kết hợp khá dễ dàng với một bảng tra cứu với mối tương quan 1-1 giữa đầu vào và đầu ra, giống như điều ở trên (các trò chơi nhập vai có đầy đủ chúng, tôi chắc chắn rằng chúng tồn tại trong các trò chơi khác "doanh nghiệp" cũng vậy): D
Mặt khác, nếu mệnh đề trường hợp phức tạp hơn hoặc có điều gì đó xảy ra sau câu lệnh switch, tôi sẽ không khuyên bạn nên sử dụng return trong đó, mà nên đặt một biến trong switch, kết thúc nó bằng dấu ngắt và trả về giá trị của biến cuối cùng.
(Mặt ... thứ ba? ... bạn luôn có thể cấu trúc lại một công tắc thành phương thức của riêng nó ... Tôi nghi ngờ nó sẽ có ảnh hưởng đến hiệu suất và tôi sẽ không ngạc nhiên nếu các trình biên dịch hiện đại thậm chí có thể nhận ra nó là một cái gì đó có thể được nội tuyến ...)
continue
hoặcgoto
- thật thành ngữ khi sử dụng chúng thay chobreak
.