Поки я нещодавно працював у великій компанії, я помітив, що там програмісти дотримувалися цього стилю кодування:
Припустимо, у мене є функція, яка повертає 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
). Але в якийсь момент це стає проблематичним. Основна перевага використання Map в тому, що ви можете завантажити її з файлу або таблиці тощо. Якщо ви жорстко кодуєте вхід на карту, я не бачу великого значення через комутатор.