하지만 최근에는 다형성이 꽤 널리 사용되고 있으며, 여러 프로그래밍 언어에서 보다 세련
된 형태의 switch 문을 지원하고 있다.
따라서 오늘날은“반복해서 등장하는 동일한 switch 문”을 냄새 로 여기고 있다.
반복해서 동일한 switch 문이 존재할 경우, 새로운 조건을 추가하거나 기존의 조건을 변경 할 때모든 switch 문을 찾아서 코드를 고쳐야 할지도 모른다.
25 의 "리팩토링 32. 조건부 로직을 다형성으로 바꾸기(Replace Conditional with Polymorphism)" 을 사용해서 리팩토링을 적용할 수 있다
이미 앞서 다룬 리팩토링 기술이기 때문에 과거 리팩토링의 대상이었던 자바의 switch 문의 변화를 주 예시로 설명함
public int vacationHours(String type) {
int result;
switch (type) {
case "full-time": result = 120;
case "part-time": result = 80;
case "temporal": result = 32;
default: result = 0;
}
return result;
}
전형적인 올드스쿨 switch 문(Statement)
break; 를 걸지 않으면 최하단 (default) 까지 전부 진행되게 된다
public int vacationHours() {
return switch (type) {
case "full-time" -> 120;
case "part-time" -> 80;
case "temporal" -> 32;
default -> 0;
};
}
냄새 12. 반복되는 switch 문(Repeated Swtiches)
25 의 "리팩토링 32. 조건부 로직을 다형성으로 바꾸기(Replace Conditional with Polymorphism)" 을 사용해서 리팩토링을 적용할 수 있다