บ่อยครั้งที่ฉันได้ยินเกี่ยวกับคำสั่ง switch มันวางตัวเป็นวิธีการแทนที่ยาวถ้า ... else chains แต่ดูเหมือนว่าเมื่อฉันใช้คำสั่งเปลี่ยนฉันกำลังเขียนรหัสเพิ่มเติมที่ฉันจะเขียนถ้า ... อื่น นอกจากนี้คุณยังมีปัญหาอื่น ๆ เช่นการรักษาตัวแปรทั้งหมดสำหรับการโทรทั้งหมดอยู่ในขอบเขตเดียวกัน
นี่คือโค้ดบางส่วนที่แทนโฟลว์ที่ฉันเขียนตามปกติ ( ขอบคุณ diam )
String comment; // The generated insult.
int which = (int)(Math.random() * 3); // Result is 0, 1, or 2.
if (which == 0) {
comment = "You look so much better than usual.";
} else if (which == 1) {
comment = "Your work is up to its usual standards.";
} else if (which == 2) {
comment = "You're quite competent for so little experience.";
} else {
comment = "Oops -- something is wrong with this code.";
}
จากนั้นพวกเขาต้องการให้ฉันแทนที่ด้วยสิ่งนี้:
String comment; // The generated insult.
int which = (int)(Math.random() * 3); // Result is 0, 1, or 2.
switch (which) {
case 0:
comment = "You look so much better than usual.";
break;
case 1:
comment = "Your work is up to its usual standards.";
break;
case 2:
comment = "You're quite competent for so little experience.";
break;
default:
comment = "Oops -- something is wrong with this code.";
}
ดูเหมือนว่ารหัสมากขึ้นในไวยากรณ์ที่น่าอึดอัดใจมากขึ้น แต่มีข้อดีกว่าการใช้คำสั่ง switch หรือไม่?