if(!aDate.isBefore(plan.summerStart)&&!aDate.isAfter(plan.summerEnd))
charge = quantity*plan.summerRate;
else
charge = quantity*plan.regularRate+plan.regularserviceCharge;
// 조건문 분해하기 적용
if(summer())
charge = summercharge();
else
charge = regularCharge();
동일한 의미의 값을 조건식으로 return 한다면 통합한다.
if(anEmployee.seniority<2) return 0;
if(anEmployee.monthsDisabled>12) return 0;
if(anEmployee.isPartTime)return 0;
// 조건식 통합하기
if (isNotEligibleForDisability())return 0;
function isNotEligibleForDisability(){
return ((anEmployee.seniority<2)||(anEmployee.monthsDisabled>12)||(anEmployee.isPartTime));
}
function getPayAmount(){
let result;
if (isDead)
result= deadAmount();
else {
if(isseparated)
result = separatedAmount();
else{
if(isRetired)
result = retiredAmount();
else
result = normalPayAmount();
}
}
return result;
}
// 중첩조건문을 보호 구문으로 바꾸기
function getPayAmount(){
if(isDead) return deadAmount();
if(isseparated) return separatedAmount();
if(isRetired) return retiredAmount();
return normalPayAmount();
}
switch(bird.type){
case '유럽 제비':
return '보통이다';
case '아프리카 제비':
return (bird.numberOfCoconuts>2)?'지쳤다':'보통이다';
case '노르웨이 파랑 앵무':
return (bird.voltage>100)?'그을렸다':'예쁘다';
default:
return '알 수 없다';
}
// 조건부 로직을 다형성으로 바꾸기
class Bird{
constructor(birdObject){
Object.assign(this,birdObject);
}
get plumage(){
return '알 수 없다';
}
get airSpeedVelocity(){
return null;
}
}
class EuropeanSwallow extends Bird{
get plumage(){
return '보통이다';
}
get airSpeedVelocity(){
return 35;
}
}
....
if (aCustomer==='미확인 고객') customerName = '거주자';
// 특이 케이스 추가하기
class UnknownCustomer{
get name(){return '거주자';}
}
for(const p of people){
if(!found){
if(p==='조커'){
sendAlert();
found=true;
}
}
}
//제어 플래그를 탈출문으로 바꾸기
for(const p of people){
if(p==='조커'){
sendAlert();
break;
}
}
11. API 리팩터링 (0) | 2021.11.04 |
---|---|
9. 데이터 조직화 (0) | 2021.11.04 |
8. 기능 이동 (0) | 2021.10.11 |
7.7. 위임 숨기기 | 7.8. 중개자 제거하기 | 7.9. 알고리즘 교체하기 (0) | 2021.10.05 |
7.5. 클래스 추출하기 | 7.6. 클래스 인라인하기 (0) | 2021.10.05 |
댓글 영역