29.조건문 쪼개기 Decompose Conditional
-2018.05.03-
이해하기 어려운 조건문이 있는 코드를 자주 보게 됩니다. 이 기법의 목적은 조건이 있는 함수를 추출하여 코드를 읽기 쉽게 만드는 것입니다. 조건이 추출되어 종속성으로 주입되는 경우 코드를 테스트하는 것이 더 쉬울 것입니다.
이 기술은 좋은 변수 이름을 사용하는 것이 조건을 설명하기에 충분하지 않을 때 유용합니다.
- 조건은 클래스의 여러 부분에서 중복됩니다.
- 조건이 다른 클래스를 따라 복제됩니다.
- 복잡함 때문에 조건을 격리하여 테스트 하십시오.
class Simple_Example{
void Example(){
if(date < SUPPER_STAR || date > SUPPER_END)
charge = quantity * winterRate + winterServiceCharge;
else
Charge = quantity * summerRate;
}
}
코드가 이해하기 쉬운 상태로
class Simple_Example{
void Example(){
if(IsNotSummer())
charge = CalculateWinterRate();
else
Charge = CalculateSummerRate());
}
}
private bool IsNotSummer(){
return date < SUPPER_STAR || date > SUPPER_END;
}
private bool CalculateWinterRate(){
return quantity * winterRate + winterServiceCharge;
}
private bool CalculateSummerRate(){
return quantity * summerRate;
}
Decompose 조건 리팩토링을 적용할 수 있습니다.