728x90
반응형

if문 제거하기

중복된 if 조건들은 변경사항이 발생하면 프로젝트내에 모두 찾기하여 일일이 수정해야 하기 때문에 좋은 코드가 아님

이를 개선해보자

 

1. 개선 전 코드

function executePayment(paymentType) {
    if(paymentTpye === "KAKAO") {
    	return "카카오 결제 처리"
    } else if(paymentType === "NAVER") {
    	return "네이버 결제 처리"
    } else if(paymentType === "COUPANG") {
    	return "쿠팡 결제 처리"
    } else if(paymentType === "PAYCO") {
    	return "페이코 결제 처리"
    } else if(paymentType === "APPLE") {
    	return "애플 결제 처리"
    }
}

console.log(executePayment("KAKAO"));	// 카카오 결제 처리

 

1. 개선 후 코드

const paymentMap = {
    "KAKAO": "카카오 결제 처리",
    "NAVER": "네이버 결제 처리",
    "COUPANG": "쿠팡 결제 처리",
    "PAYCO": "페이코 결제 처리",
    "APPLE": "애플 결제 처리",
}

function executePayment(paymentType) {
	return paymentMap[paymentType];
}

console.log(executePayment("KAKAO"));	// 카카오 결제 처리

 


2. 개선 전 코드

function payOnKakao() {console.log("kakao pay 처리 중")};
function payOnNaver() {console.log("naver pay 처리 중")};
function payOnCoupang() {console.log("coupang pay 처리 중")};
function payOnPayco() {console.log("payco pay 처리 중")};
function payOnApple() {console.log("apple pay 처리 중")};
function sendLog() {console.log(log 남기기)};

function executePayment(paymentType) {
    if(paymentTpye === "KAKAO") {
    	payOnKakao();
    } else if(paymentType === "NAVER") {
    	sendLog();
        payOnNaver();
    } else if(paymentType === "COUPANG") {
    	sendLog();
    	payOnCoupang();
    } else if(paymentType === "PAYCO") {
    	sendLog();
    	payOnPayco();
    } else if(paymentType === "APPLE") {
    	sendLog();
    	payOnApple();
    }
}

executePayment("KAKAO");	// kakao pay 처리 중

 

2. 개선 후 코드

function payOnKakao() {
    console.log("kakao pay 처리 중");
}
function payOnNaver() {
    console.log("naver pay 처리 중");
}
function payOnCoupang() {
    console.log("coupang pay 처리 중");
}
function payOnPayco() {
    console.log("payco pay 처리 중");
}
function payOnApple() {
    console.log("apple pay 처리 중");
}
function sendLog() {
    console.log("log 남기기");
}

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

function executePayment(paymentType) {
    paymentMap[paymentType]();
}

executePayment("NAVER");	// naver pay 처리 중
반응형
복사했습니다!