Mentre di recente lavoravo in una grande azienda, ho notato che i programmatori hanno seguito questo stile di programmazione:
Supponiamo che io abbia una funzione che restituisce 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 sulla revisione del codice mi è stato chiesto di modificare la funzione come segue:
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 sia 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 chiamata molte volte, la seconda funzione non rallenterebbe il tempo di esecuzione dell'utilità che la chiama?
Cosa ne pensi di questo?
switch
sembra più appropriata diif-else
). Ma a un certo punto, diventa problematico. Il vantaggio principale dell'uso di una mappa è che puoi caricarlo da un file o da una tabella, ecc. Se stai codificando l'input sulla mappa, non vedo molto valore su uno switch.