개요
복잡한 조건부 로직은 프로그램을 복잡하게 만든다.
조건문은 결과에 따른 동작을 표현하지만, "왜" 일어나는지를 알려주지 않는다.
거대한 코드 블록을 작은 코드 뭉치로 분해 및 함수로 캡슐화한 후 적절한 이름을 붙여준다.
이렇게 하면 무엇을 위해 분기했는지 명백해진다.
예시
//여름철엔 할인율이 달라짐 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(); |
'IT책, 강의 > 리팩터링' 카테고리의 다른 글
10 - 조건부 로직 간소화 - 중첩 조건문을 보호 구문으로 바꾸기 (0) | 2023.09.07 |
---|---|
10 - 조건부 로직 간소화 - 조건식 통합하기 (0) | 2023.09.06 |
09 - 데이터 조직화 - 매직 리터럴 바꾸기 (0) | 2023.09.04 |
09 - 데이터 조직화 - 값을 참조로 바꾸기 (0) | 2023.09.03 |
09 - 데이터 조직화 - 참조를 값으로 바꾸기 (0) | 2023.09.01 |