본문 바로가기

코딩/Java

Java - Switch 문 꿀팁 (중복 코드 간결화)

반응형

아래의 switch 문의 목표는

변수 day의 값이 "월요일", "수요일", "금요일" 중에 하나면 >>> "알바 가는 날" 출력.

변수 day의 값이 "화요일" 혹은 "목요일"이면 >>> "쉬는 날" 출력.

 

 

public class Example {
	public static void main(String[] args) {
		String day = "월요일";

		switch (day) {
			case "월요일":
				System.out.println("알바 가는 날");
				break;
			case "화요일":
				System.out.println("쉬는 날");
				break;
			case "수요일":
				System.out.println("알바 가는 날");
				break;
			case "목요일":
				System.out.println("쉬는 날");
				break;
			case "금요일":
				System.out.println("알바 가는 날");
				break;
		}
	}
}

솔직히 실행하는 데엔 아무런 문제가 없지만 중복된 코드가 많다.

 

예를 들어, 변수 day의 값이 "월요일", "수요일", "금요일" 경우

각 케이스마다

 

System.out.println("알바 가는 날");

break;

 

라는 중복된 코드가 발생한다.

 

 

 

중복된 코드를 줄이기 위해 위에 코드를 아래와 같이 if 문으로 간결하게 코드를 짤 수 있다.

 

public class Example {
	public static void main(String[] args) {
		String day = "월요일";
	
		if (day == "월요일" || day == "수요일" || day == "금요일") {
			System.out.println("알바 가는 날");
		} else if (day == "화요일" || day == "목요일") {
			System.out.println("쉬는 날");
		}
	}
}

맨 위 switch 문보다 간결해진 코드.

 

 

 

만약 어떤 이유로 switch 문을 사용해야 한다면, switch 문도 위에 if 문같이 간결하게 짤 수 있다.

 

public class Example {
	public static void main(String[] args) {
		String day = "월요일";
	
		switch (day) {
			case "월요일":
			case "수요일":
			case "금요일":
				System.out.println("알바 가는 날");
				break;
			case "화요일":
			case "목요일":
				System.out.println("쉬는 날");
				break;
		}
	}
}

변수 day의 값을 바꿔도 아무런 문제 없이 된다.

 

 

 

구글링해 봤더니, 오라클 switch 문 관련 문서에서도 case 문을 겹치게 쓴다.

https://docs.oracle.com/javase/8/docs/technotes/guides/language/strings-switch.html

반응형