개요

복잡한 조건부 로직은 프로그램을 복잡하게 만든다.

 

조건문은 결과에 따른 동작을 표현하지만, "" 일어나는지를 알려주지 않는다.

거대한 코드 블록을 작은 코드 뭉치로 분해 함수로 캡슐화한 적절한 이름을 붙여준다.

이렇게 하면 무엇을 위해 분기했는지 명백해진다.

예시



//여름철엔 할인율이 달라짐
if(!aDate.isBefore(plan.summerStrat) && !aDate.isAfter(plan.summerEnd)){
    charge = quantity * plan.summerRate;
}else{
    charge = quantity * plan.regularRate + plan.regularServiceCharge;
}


if(summer()){
    charge = quantity * plan.summerRate;
}else{
    charge = quantity * plan.regularRate + plan.regularServiceCharge;
}
//추출
function summer() {
    return !aDate.isBefore(plan.summerStrat) && !aDate.isAfter(plan.summerEnd);
}
//나머지도 정리
if(summer()){
    charge = summerCharge();
}else{
    charge = regularCharge();
}
function regularCharge() {
    return quantity * plan.regularRate + plan.regularServiceCharge;
}
function summerCharge() {
    return quantity * plan.summerRate;
}
function summer() {
    return !aDate.isBefore(plan.summerStrat) && !aDate.isAfter(plan.summerEnd);
}
//조건문을 함수로 정리하니 이렇게 추가로 정리할 기회를 얻었다.
charge = summer() ? summerCharge() : regularCharge();

+ Recent posts