-
[Refactoring] 12. 반복되는 switch 문클린코드 2022. 9. 15. 19:41
| 인프런 - 백기선님의 코딩으로 학습하는 리팩토링 강의를 수강하며 정리한 글입니다.
반복되는 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