리팩터링은 코드의 가독성, 유지 보수성, 구조를 개선하면서 기능에는 영향을 주지 않는 프로세스입니다. 함수 추출(Extract Function) 기술은 대표적인 리팩터링 기술 중 하나로, 큰 함수를 작은 함수로 분할하는 작업을 합니다. 이 글에서는 Java에서 함수 추출 기술, 그 장점, 그리고 실용적인 예제를 통해 기술 적용법을 알아보겠습니다.
1. 함수 추출 기술의 주요 장점은 다음과 같습니다:
- 가독성 향상: 복잡한 함수를 작고 명확한 이름을 가진 함수로 분할하면 코드를 이해하기 쉬워집니다.
- 재사용성 증가: 독립된 작은 함수로 분할하면 다른 곳에서도 쉽게 재사용할 수 있습니다.
- 유지 보수성 개선: 문제가 발생했을 때 작은 함수를 수정하면 전체 코드에 미치는 영향이 줄어듭니다.
2. 함수 추출 기술 적용 시기
함수 추출 기술은 다음과 같은 경우에 적용할 수 있습니다:
- 코드 중복 발견 시
- 함수가 너무 길거나 복잡한 경우
- 작은 기능 단위로 분할 가능한 경우
3. 함수 추출 기술 단계별 가이드
(1) 원하는 코드 부분을 선택합니다.
(2) 새로운 함수로 이동시킬 코드를 찾습니다.
(3) 선택한 코드를 새로운 함수로 이동시키고, 해당 함수에 명확한 이름을 부여합니다.
(4) 원래 함수에서 새 함수를 호출하도록 수정합니다.
(5) 코드가 정상적으로 동작하는지 테스트합니다.
4. 예제: 함수 추출을 사용한 리팩터링
함수 추출 기술을 사용해 코드를 리팩터링하는 예를 살펴보겠습니다.
리팩터링 전 코드:
public void printReceipt(Order order) {
double totalPrice = 0.0;
for (Item item : order.getItems()) {
double itemPrice = item.getPrice() * item.getQuantity();
totalPrice += itemPrice;
System.out.println(item.getName() + ": " + itemPrice);
}
double tax = totalPrice * 0.1;
double finalPrice = totalPrice + tax;
System.out.println("총 가격: " + totalPrice);
System.out.println("부가세: " + tax);
System.out.println("최종 가격: " + finalPrice);
}
함수 추출 후 리팩터링 된 코드:
public void printReceipt(Order order) {
double totalPrice = calculateTotalPrice(order);
double tax = calculateTax(totalPrice);
double finalPrice = totalPrice + tax;
printItemizedReceipt(order);
System.out.println("총 가격: " + totalPrice);
System.out.println("부가세: " + tax);
System.out.println("최종 가격: " + finalPrice);
}
private double calculateTotalPrice(Order order) {
double totalPrice = 0.0;
for (Item item : order.getItems()) {
totalPrice += item.getPrice() * item.getQuantity();
}
return totalPrice;
}
private double calculateTax(double totalPrice) {
return totalPrice * 0.1;
}
private void printItemizedReceipt(Order order) {
for (Item item : order.getItems()) {
double itemPrice = item.getPrice() * item.getQuantity();
System.out.println(item.getName() + ": " + itemPrice);
}
}
위의 예제에서, printReceipt 함수가 너무 길고 복잡했기 때문에 작은 함수들로 분할했습니다. 이렇게 분할하면 코드의 가독성과 유지 보수성이 향상됩니다.
5. 결론
함수 추출 기술은 Java 코드 리팩터링에서 중요한 역할을 합니다. 코드의 가독성과 유지 보수성을 개선하려면 이 기술을 적절히 활용하는 것이 중요합니다. 이 글을 통해 함수 추출 기술의 개념과 사용법을 이해하고 실제 예제를 통해 적용하는 방법을 배웠습니다. 이러한 지식을 바탕으로 코드를 깔끔하게 정리하고 개선할 수 있습니다.
'개발 > 리팩토링' 카테고리의 다른 글
[리팩토링] 변수 인라인하기 (Inline Variable) (0) | 2023.04.26 |
---|---|
[리팩토링] 변수 추출하기 (Extract Variable) (0) | 2023.04.26 |
[리팩토링] 함수 인라인하기 (Inline Function) (0) | 2023.04.25 |