카테고리 없음

if 대신 switch문을 사용하는 이유

Alex Han 2025. 2. 12. 20:35
반응형

switch문은 if-else문과 기능적으로 비슷하지만, 특정한 상황에서 가독성, 성능, 유지보수성 등의 이유로 더 적합할 수 있다. 아래에서 switch를 사용하는 이유를 정리해 보겠다.

 

 

 


1. switch를 사용하는 주요 이유

 

✅ 1) 가독성이 좋음

여러 개의 if-else를 사용할 경우 코드가 길어지고 복잡해질 수 있다.

switch를 사용하면 코드가 한눈에 들어오고, 분기 처리가 깔끔해진다.

 

🔹 예제: if-else와 switch 비교

 

if-else 사용

// if-else 사용
let fruit = "apple";

if (fruit === "apple") {
    console.log("사과입니다.");
} else if (fruit === "banana") {
    console.log("바나나입니다.");
} else if (fruit === "orange") {
    console.log("오렌지입니다.");
} else {
    console.log("알 수 없는 과일입니다.");
}

 

switch 사용

// switch 사용
switch (fruit) {
    case "apple":
        console.log("사과입니다.");
        break;
    case "banana":
        console.log("바나나입니다.");
        break;
    case "orange":
        console.log("오렌지입니다.");
        break;
    default:
        console.log("알 수 없는 과일입니다.");
}

 

switch문이 더 깔끔하게 정리되었으며, 조건이 많아질수록 가독성이 더 좋아진다.

 


 

✅ 2) 성능이 더 나을 수 있음

일반적으로 switch문은 내부적으로 해시 테이블 또는 점프 테이블로 변환될 수 있어, 조건이 많을 때 if-else보다 빠를 수도 있다.

특히 숫자 기반 비교(switch (num))에서 성능 차이가 더 클 수 있다.

 

🔹 예제: if-else vs switch 성능 비교

 

if-else 사용

let num = 3;

// if-else 방식
if (num === 1) {
    console.log("One");
} else if (num === 2) {
    console.log("Two");
} else if (num === 3) {
    console.log("Three");
} else if (num === 4) {
    console.log("Four");
} else {
    console.log("Other");
}

 

switch 사용

// switch 방식
switch (num) {
    case 1:
        console.log("One");
        break;
    case 2:
        console.log("Two");
        break;
    case 3:
        console.log("Three");
        break;
    case 4:
        console.log("Four");
        break;
    default:
        console.log("Other");
}

 

자바스크립트 엔진이 switch를 최적화할 경우, 숫자 기반 switch는 if-else보다 빠르게 실행될 수도 있다.

✅ 하지만 문자열 비교에서는 차이가 크지 않을 수도 있다.

 


 

✅ 3) 유지보수가 편리함

새로운 조건을 추가할 때 switchcase 하나만 추가하면 되므로 유지보수가 쉬움.

if-else는 여러 else if를 추가해야 하므로 가독성이 떨어질 수 있음.

 

🔹 예제: switch로 유지보수하기 좋은 코드

function getDayName(day) {
    switch (day) {
        case 0: return "Sunday";
        case 1: return "Monday";
        case 2: return "Tuesday";
        case 3: return "Wednesday";
        case 4: return "Thursday";
        case 5: return "Friday";
        case 6: return "Saturday";
        default: return "Invalid day";
    }
}
console.log(getDayName(3)); // "Wednesday"

 

새로운 요일을 추가하려면 case 하나만 추가하면 됨.

 

 

 


2. 언제 switch를 쓰지 않는 것이 좋을까?

 

❌ 1) 조건이 단순할 때

switch는 여러 개의 조건을 검사할 때 유용하지만, 조건이 2~3개 정도로 적다면 if-else가 더 간결할 수도 있다.

if (x === 1) {
    console.log("One");
} else {
    console.log("Not One");
}

 

이렇게 단순한 경우에는 if-else가 더 간단하다.

 


 

❌ 2. 범위 조건을 사용할 때

switch는 특정 값과의 정확한 일치(===) 만 검사할 수 있다.

if-else범위 조건(>, <, >=, <=) 을 처리할 수 있어, 범위가 필요하면 if-else가 더 적합하다.

 

🔹 예제: 나이에 따른 등급 분류

let age = 25;

// if-else 사용
if (age < 13) {
    console.log("어린이");
} else if (age < 20) {
    console.log("청소년");
} else {
    console.log("성인");
}

// switch는 범위 조건을 다루기 어려움!

 

범위 비교가 필요하면 if-else를 사용해야 한다.

 

 

 


3. 결론

switch가독성이 좋고, 성능이 더 나을 수도 있으며, 유지보수가 쉬운 경우에 유용하다.

✅ 하지만 조건이 단순하거나, 범위 비교가 필요하면 if-else가 더 적합할 수도 있다.

✅ 상황에 따라 if-elseswitch를 적절히 선택하는 것이 중요하다. 🚀

반응형