ขณะที่ฉันทำงานกับ บริษัท ใหญ่เมื่อไม่นานมานี้ฉันสังเกตเห็นว่าโปรแกรมเมอร์ที่นั่นปฏิบัติตามรูปแบบการเข้ารหัสนี้:
สมมติว่าฉันมีฟังก์ชั่นที่ส่งกลับ 12 ถ้าอินพุตเป็น A, 21 ถ้าอินพุตเป็น B และ 45 ถ้าอินพุตเป็น C
ดังนั้นฉันสามารถเขียนฟังก์ชั่นลายเซ็นเป็น:
int foo(String s){
if(s.equals("A")) return 12;
else if(s.equals("B")) return 21;
else if(s.equals("C")) return 45;
else throw new RuntimeException("Invalid input to function foo");
}
แต่ในการตรวจสอบรหัสฉันถูกขอให้เปลี่ยนฟังก์ชั่นต่อไปนี้:
int foo(String s){
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("A", 12);
map.put("B", 21);
map.put("C", 45);
return map.get(s);
}
ฉันไม่สามารถโน้มน้าวใจตัวเองว่าทำไมรหัสที่สองนั้นดีกว่ารหัสแรก รหัสที่สองจะใช้เวลาในการรันแน่นอน
เหตุผลเดียวที่ใช้รหัสที่สองคือสามารถให้อ่านได้ดีขึ้น แต่ถ้าฟังก์ชั่นถูกเรียกหลาย ๆ ครั้งฟังก์ชั่นที่สองจะไม่ทำให้เวลาการเรียกใช้ยูทิลิตี้ช้าลงหรือไม่
คุณคิดอย่างไรเกี่ยวกับเรื่องนี้?
switch
ดูเหมาะสมกว่าif-else
) แต่ในบางประเด็นมันก็กลายเป็นปัญหา ข้อได้เปรียบหลักของการใช้แผนที่คือคุณสามารถโหลดได้จากไฟล์หรือตารางเป็นต้นหากคุณเข้ารหัสข้อมูลลงในแผนที่อย่างหนักฉันไม่เห็นคุณค่ามากเกินสวิตช์