Alors que je travaillais récemment dans une grande entreprise, j'ai remarqué que les programmeurs y suivaient ce style de codage:
Supposons que j'ai une fonction qui renvoie 12 si l'entrée est A, 21 si l'entrée est B et 45 si l'entrée est C.
Je peux donc écrire la signature de la fonction comme suit:
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");
}
Mais lors de l'examen du code, on m'a demandé de modifier la fonction comme suit:
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);
}
Je ne peux pas me convaincre pourquoi le deuxième code est meilleur que le premier. Le deuxième code prendrait certainement plus de temps à s'exécuter.
La seule raison d'utiliser le deuxième code peut être qu'il offre une meilleure lisibilité. Mais si la fonction est appelée plusieurs fois, la deuxième fonction ne ralentira-t-elle pas le temps d'exécution de l'utilitaire qui l'appelle?
Que penses-tu de cela?
switch
semble plus appropriée queif-else
). Mais à un moment donné, cela devient problématique. Le principal avantage de l'utilisation d'une carte est que vous pouvez la charger à partir d'un fichier ou d'une table, etc. Si vous codez en dur l'entrée sur la carte, je ne vois pas beaucoup de valeur sur un commutateur.