리팩터링/리팩터링 기법
리팩터링. 조건문을 다형성으로 바꾸기(Replace Conditional with Polymorphism)
developer-tj
2023. 2. 23. 12:00
반응형
여러 타입에 따라 각기 다른 로직으로 처리해야 하는 경우에 다형성을 적용해서 조건문을 보다 명확하게 분리 할 수 있다.
switch 문을 각기 다른 클래스로 만들어 제거할수 있다.
모든 조건문을 다형성으로 바꿔야 하는 것은 아니다
switch (bird.type)
{
case "유럽 제비":
return "보통이다";
case "아프리카 제비":
return (bird.numberOfCoconuts > 2) ? "지쳤다" : "보통이다";
case "노르웨이 파랑 앵무":
return (bird.voltage > 100) ? "그을렸다" : "예쁘다";
default:
return "알 수 없다";
}
위 같은 switch 문을 아래 처럼 각기 다른 클래스로 만들어 switch 문을 없앤다
class EuropeanSwallow : public Bird
{
void plumage()
{
return "보통이다";
}
};
...
class EuropeanSwallow : public Bird
{
void plumage()
{
return (bird.numberOfCoconuts > 2) ? "지쳤다" : "보통이다";
}
};
...
class EuropeanSwallow : public Bird
{
void plumage()
{
return (bird.voltage > 100) ? "그을렸다" : "예쁘다";
}
};