최근에 대기업에서 일하는 동안 프로그래머는 다음 코딩 스타일을 따랐습니다.
입력이 A이면 12, 입력이 B이면 21, 입력이 C이면 45를 반환하는 함수가 있다고 가정합니다.
따라서 함수 서명을 다음과 같이 쓸 수 있습니다.
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
). 그러나 어느 시점에서는 문제가됩니다. 맵을 사용하는 주된 장점은 파일이나 테이블 등에서로드 할 수 있다는 것입니다. 입력을 맵에 하드 코딩하는 경우 스위치를 통해 많은 가치를 볼 수 없습니다.