본문 바로가기

개발/Java Script

[Refactoring] if 문 대체

아래와 같은 if 구문이 있는 경우

1. 간단한 if 구문

const paymentMap = {  
    "KAKAO_PAYMENT": "카카오 결제 처리",  
    "NAVER_PAYMENT": "네이버 결제 처리",  
    "PAYCO_PAYMENT": "페이코 결제 처리",  
    "APPLE_PAYMENT": "애플 결제 처리"  
}

function executePayment(paymentType) {  
    /*
    if(paymentType === "KAKAO\_PAYMENT") {  
    return "카카오 결제 처리"  
    } else if(paymentType === "NAVER\_PAYMENT") {  
    return "네이버 결제 처리"  
    } else if(paymentType === "PAYCO\_PAYMENT") {  
    return "페이코 결제 처리"  
    } else if(paymentType === "APPLE\_PAYMENT") {  
    return "애플 결제 처리"  
    }  
    */

    return paymentMap\[paymentType\];

}

console.log(executePayment("KAKAO\_PAYMENT"));

2. 함수 호출

function payOnKakao() { console.log("kakao pay 처리 중...") };  
function payOnNaver() {};  
function payOnCoupang() {};  
function payOnPayco() {};  
function payOnApple() {};

const paymentMap = {  
    KAKAO\_PAYMENT() {  
        payOnKakao();  
    },  
    NAVER\_PAYMENT() {  
        sendLog();  
        payOnNaver();  
    },  
    COUPANG\_PAYMENT() {  
        payOnCoupang();  
    },  
    PAYCO\_PAYMENT() {  
        sendLog();  
        payOnPayco();  
    },  
        APPLE\_PAYMENT() {  
        payOnApple();  
    }  
}

function executePayment(paymentType) {  
    /*
    if(paymentType === "KAKAO\_PAYMENT") {  
    payOnKakao();  
    } else if(paymentType === "NAVER\_PAYMENT") {  
    sendLog();  
    payOnNaver();  
    } else if(paymentType === "COUPANG\_PAYMENT") {  
    sendLog();  
    payOnCoupang();  
    } else if(paymentType === "PAYCO\_PAYMENT") {  
    sendLog();  
    payOnPayco();  
    }  
    */

    paymentMap[paymentType]();

}

executePayment("KAKAO\_PAYMENT");