개인적으로 현업에서 switch 표현식을 사용하는 걸 선호하지 않습니다만, 분기처리 할 때 switch 표현식을 사용하면 생각보다 코드가 깔끔해지는 경우들이 있죠.
특히 분기처리 해야하는 경우의 수가 많을 때 if 표현식을 계속 쓰는 것 보다 switch 표현식을 사용하는 게 코드 가독성이 높아지더라구요.
하지만 기존의 switch 표현식은 가독성이 굉장히 안좋은데요, 깔끔하게 작성하는 방법을 알아보도록 하겠습니다.
먼저 기존의 switch 표현식을 볼까요?
public String switchV1(int day) {
String dayString = "";
switch (day) {
case 1: dayString = "MONDAY";
break;
case 2: dayString = "TUESDAY";
break;
case 3: dayString = "Wednesday";
break;
case 4: dayString = "Thursday";
break;
case 5: dayString = "Friday";
break;
case 6: dayString = "Saturday";
break;
case 7: dayString = "Sunday";
break;
default: dayString = "Invalid month";
break;
}
return dayString;
}
break를 막 하고 있고, 모든 case에서 값을 할당해주고 있습니다.
솔직히 코드가 맘에 들지 않습니다. 굉장히 레거시한 느낌이 많이 들죠.
물론 여기서 좀 더 깔끔하게 처리할 수 있습니다.
public String switchV2(int day) {
switch (day) {
case 1:
return "MONDAY";
case 2:
return "TUESDAY";
case 3:
return "Wednesday";
case 4:
return "Thursday";
case 5:
return "Friday";
case 6:
return "Saturday";
case 7:
return "Sunday";
default:
return "Invalid month";
}
}
바로 반환을 하는거죠.
하지만 return을 하는 순간 바로 메서드가 끝나기 때문에 공통적인 어떤 처리를 할 수 없습니다.
만약 요일 앞뒤에 대괄호를 붙여달라고 요청이 왔다면 어떻게 할 수 있을까요?