12.6.3 패턴을 사용하는 switch 문의 평가 순서
상수를 사용하는 switch 문은 대부분 case 레이블의 순서를 자유롭게 변경하더라도 동작에 영향을 미치지 않는다.3 이는 각각의 case 문이 단 하나의 상숫값과 연결되어 있고, switch 문에서 사용하는 모든 상숫값은 서로 다른 값을 가져야 하며, 결과적으로 입력값에 따라 최대 한 개의 case 문과 매칭되도록 구성해야 하기 때문이다. 하지만 패턴을 사용하는 switch 문이라면 이는 더 이상 사실이 아니다.
패턴을 사용하는 switch 문의 논리적 평가 순서는 다음과 같이 단순화할 수 있다.
• 각각의 case 레이블은 소스 코드에 나열된 순서대로 평가된다.
• default 레이블의 본문은 default 레이블이 switch 문 내의 어디에 있더라도 모든 case 레이블이 평가된 이후에 비로소 수행된다.
TIP ≡
지금은 default 레이블의 위치와 상관없이 다른 모든 case 레이블이 일치하지 않은 경우에만 default 레이블과 관련된 본문이 수행된다는 사실을 정확히 알고 있겠지만, 다른 개발자들은 코드를 그렇게 읽지 않을 수도 있다(자신이 작성한 코드를 다음에 읽을 때도). default 레이블을 switch 문의 맨 아랫쪽에 두면 이러한 동작 방식이 좀 더 명확해진다.
3 이처럼 동작하지 않는 유일한 경우는 특정 case 본문 내에서 선언한 변수를 그다음에 나오는 case 본문에서 다시 사용하는 경우다. 이처럼 코드를 작성하는 것은 매우 나쁜 방법이고, 변수의 사용 범위를 공유하기 때문에 문제가 발생한다.