Mentre di recente lavoravo in una grande azienda, ho notato che i programmatori seguivano questo stile di codifica:
Supponiamo che io abbia una funzione che ritorna 12 se l'ingresso è A, 21 se l'ingresso è B, e 45 se l'ingresso è C.
Quindi posso scrivere la firma della funzione come:
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");
}
Ma alla revisione del codice mi è stato chiesto di cambiare la funzione nel modo seguente:
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);
}
Non riesco a convincermi del perché il secondo codice è migliore del primo. Il secondo codice richiederebbe sicuramente più tempo per l'esecuzione.
L'unico motivo per utilizzare il secondo codice può essere che offre una migliore leggibilità. Ma se la funzione viene richiamata più volte, la seconda funzione non rallenterebbe il tempo di esecuzione dell'utilità richiamandola?
Che cosa ne pensi?