개인적으로 현업에서 switch 표현식을 사용하는 걸 선호하지 않습니다만, 분기처리 할 때 switch 표현식을 사용하면 생각보다 코드가 깔끔해지는 경우들이 있죠.

특히 분기처리 해야하는 경우의 수가 많을 때 if 표현식을 계속 쓰는 것 보다 switch 표현식을 사용하는 게 코드 가독성이 높아지더라구요.

하지만 기존의 switch 표현식은 가독성이 굉장히 안좋은데요, 깔끔하게 작성하는 방법을 알아보도록 하겠습니다.

v1 - 기존의 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에서 값을 할당해주고 있습니다.

솔직히 코드가 맘에 들지 않습니다. 굉장히 레거시한 느낌이 많이 들죠.

v2 - 기존의 switch 표현식에서 변수 제거

물론 여기서 좀 더 깔끔하게 처리할 수 있습니다.

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을 하는 순간 바로 메서드가 끝나기 때문에 공통적인 어떤 처리를 할 수 없습니다.

만약 요일 앞뒤에 대괄호를 붙여달라고 요청이 왔다면 어떻게 할 수 있을까요?