| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.
반복되는 switch 문
- 예전에는 switch 문이 한 번 등장만 해도 냄새로 취급되었는데 여러 프로그래밍 언어에서 보다 세련된 형태의 switch 문을 지원해 줌으로써 반복해서 등장하는 동일한 switch 문을 냄새로 취급한다.
- 반복해서 동일한 switch 문이 존재할 경우, 새로운 조건을 추가하거나 기존의 조건을 변경할 때 모든 switch 문을 찾아서 변경해야 한다.
Before
public class SwitchImprovements {
public int vacationHours(String type) {
int result;
switch (type) {
case "full-time": result = 120; break;
case "part-time": result = 80; break;
case "temporal": result = 32; break;
default: result = 0;
}
return result;
}
}
After
public class SwitchImprovements {
public int vacationHours(String type) {
return switch (type) {
case "full-time" -> 120;
case "part-time" -> 80;
case "temporal" -> 32;
default -> 0;
};
}
}
=> 반복되는 switch 문을 메서드로 추출한 후 세련된 형태의 switch 문을 사용
* 다음과 같이 표현 가능하다
public class SwitchImprovements {
public int vacationHours(String type) {
return switch (type) {
case "full-time" -> {
// 다른 로직
yield 120;
}
case "part-time" -> {
// 다른 로직
yield 80;
}
case "temporal" -> {
// 다른 로직
yield 32;
}
default -> {
// 다른 로직
yield 0;
}
};
}
}
'클린코드' 카테고리의 다른 글
[Refactoring] 14. 성의없는 요소 (0) | 2022.09.17 |
---|---|
[Refactoring] 13. 반복문 (0) | 2022.09.16 |
[Refactoring] 11. 기본형 집착 (0) | 2022.09.14 |
[Refactoring] 10. 데이터 뭉치 (0) | 2022.09.13 |
[Refactoring] 9. 기능 편애 (0) | 2022.09.12 |