Когда я недавно работал в большой компании, я заметил, что программисты придерживались этого стиля кодирования:
Предположим, у меня есть функция, которая возвращает 12, если вход A, 21, если B, и 45, если C.
Так что я могу написать сигнатуру функции как:
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");
}
Но при проверке кода меня попросили изменить функцию на следующую:
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);
}
Я не могу убедить себя, почему второй код лучше первого. Второй код определенно займет больше времени для запуска.
Единственной причиной использования второго кода может быть то, что он обеспечивает лучшую читаемость. Но если функция вызывается много раз, разве вторая функция не замедлит время работы вызывающей ее утилиты?
Что Вы думаете об этом?
switch
кажется более подходящей, чемif-else
). Но в какой-то момент это становится проблематичным. Основным преимуществом использования карты является то, что вы можете загрузить ее из файла, таблицы и т. Д. Если вы жестко программируете входные данные для карты, я не вижу большой ценности по сравнению с переключателем.