실제 사례를 살펴보기 전에 간단한 예제를 살펴보도록 할게요
리팩토링은 누구나 흔하게 다 하고 있습니다
다만, 정의된 용어에 해당하는 것을 인지를 못할 뿐입니다
Remove Duplication (중복 코드 제거)
아래 코드는 할인 금액과 세금을 계산하는 함수입니다
총 금액에서 빼거나 더하는 것은 다르지만
비율에 해당하는 실제 금액을 계산하는 부분이 동일한 형태로 포함되어 있어요
public double getDiscount(double price, double rate) {
double p = price * discountRate; //비용 * 할인율을 통해 실제 할인액을 계산
return price - p;
}
public double getTax(double price, double rate) {
double t = price * taxRate; //비용 * 세율을 통해 실제 세액을 계산
return price + t;
}
굳이 중복 제거를 할 필요는 없지만
한 번 제거 해본다면 아래와 같은 형태로 리팩토링 가능합니다
public double rateToPrice(double price, double rate) {
return price * rate;
}
public double getDiscount(double price, double rate) {
double p = rateToPrice(price, rate);
return price - p;
}
public double getTax(double price, double rate) {
double t = rateToPrice(price, rate);
return price + t;
}
변수 이름 변경 (Rename Variable)
getDiscount와 getTax는 알아보기가 힘들어서 리팩토링이 필요해라고 생각든다면
아래와 같이 리팩토링도 가능합니다
public double rateToPrice(double price, double rate) {
return price * rate;
}
public double getPriceWithDiscount(double price, double rate) {
double p = rateToPrice(price, rate);
return price - p;
}
public double getPriceWithTax(double price, double rate) {
double t = rateToPrice(price, rate);
return price + t;
}
'Etc' 카테고리의 다른 글
서블릿(Servlet) (0) | 2024.09.01 |
---|---|
Eclipse 'Loading descriptor for ~' 에러 (1) | 2024.08.30 |
Ajax 요청시 사용하는 withCredentials 옵션의 의미 (0) | 2024.08.25 |
용어정리 (0) | 2024.08.18 |
Refactoring이란 (0) | 2024.08.11 |