Mientras trabajaba recientemente en una gran empresa, noté que los programadores seguían este estilo de codificación:
Supongamos que tengo una función que devuelve 12 si la entrada es A, 21 si la entrada es B y 45 si la entrada es C.
Entonces puedo escribir la firma de la función como:
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");
}
Pero en la revisión del código me pidieron que cambiara la función a la siguiente:
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);
}
No puedo convencerme de por qué el segundo código es mejor que el primero. El segundo código definitivamente tomaría más tiempo en ejecutarse.
La única razón para usar el segundo código puede ser que ofrece una mejor legibilidad. Pero si la función se llama muchas veces, ¿la segunda función no ralentizaría el tiempo de ejecución de la utilidad que la llama?
¿Qué piensas sobre esto?
switchparece más apropiado queif-else). Pero en algún momento, se vuelve problemático. La principal ventaja de usar un Mapa es que puede cargarlo desde un archivo o una tabla, etc. Si está codificando la entrada al mapa, no veo mucho valor en un interruptor.