Ketika saya baru-baru ini bekerja di sebuah perusahaan besar, saya perhatikan bahwa para programmer di sana mengikuti gaya pengkodean ini:
Misalkan saya memiliki fungsi yang mengembalikan 12 jika inputnya adalah A, 21 jika inputnya adalah B, dan 45 jika inputnya adalah C.
Jadi saya bisa menulis fungsi tanda tangan sebagai:
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");
}
Tetapi pada ulasan kode saya diminta untuk mengubah fungsi sebagai berikut:
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);
}
Saya tidak bisa meyakinkan diri sendiri mengapa kode kedua lebih baik dari yang pertama. Kode kedua pasti akan membutuhkan lebih banyak waktu untuk dijalankan.
Satu-satunya alasan untuk menggunakan kode kedua adalah karena ia menawarkan keterbacaan yang lebih baik. Tetapi jika fungsi dipanggil berkali-kali maka bukankah fungsi kedua memperlambat waktu menjalankan utilitas menyebutnya?
Apa yang Anda pikirkan tentang ini?
switch
sepertinya lebih tepat daripadaif-else
). Tetapi pada titik tertentu, itu menjadi bermasalah. Keuntungan utama menggunakan Peta adalah Anda dapat memuatnya dari file atau tabel, dll. Jika Anda mengkodekan input ke peta, saya tidak melihat banyak nilai di atas sakelar.