Post

리팩토링_사례_실습

리팩토링_사례_실습

필기 가자

1.2 리팩토링의 목표

1. 코드 품질 개선

리팩토링 기법 이해

2.1 주요 리팩토링 기법

  • 메서드 추출, 클래스 분리, 상태와 행위 분리. OrderProcessor 클래스:
1
2
3
4
5
6
7
8
9
10
  public Order update(Long orderId, Long userId) {
    User orderUser = getUser(userId);

    Order order = orderRepository.findById(orderId)
        .orElseThrow(() -> new ServiceException(ServiceExceptionCode.NOT_FOUND_ORDER));

    order.setUser(orderUser);
    order.setTotalPrice(BigDecimal.ZERO);
    return orderRepository.save(order);
  }
  • 효과:
    • 엔티티는 데이터를 관리하고, 행위는 별도의 클래스에서 처리하여 역할이 명확해짐.
  • Q : 이거는 서비스메서드 코드 작성으로도 가능할거 같은데 어떻게 처리해야하는가?

4. 사례 분석 및 실습

  • 단축키 실습.
    1. Extract Method:
    • 긴 메서드의 일부 코드를 새 메서드로 추출.
    • 단축키: Ctrl + Alt + M (Windows) 또는 Cmd + Option + M (Mac).
      1. Extract Class:
    • 클래스 내 관련 필드와 메서드를 별도 클래스로 이동.
    • 단축키: Ctrl + Shift + Alt + T (Windows) 또는 Cmd + Shift + Option + T (Mac).
      1. Rename Refactor:
    • 변수, 메서드, 클래스 이름을 변경하여 가독성 향상.
    • 단축키: Shift + F6.
  • OrderService 에서 오더가 변경되는 프로세스를 OrderProcessService로 분리함.

4.5 리팩토링 효과

  1. 가독성 향상:
    • 각 클래스와 메서드가 단일 책임을 가지므로 코드 이해가 쉬워짐.
  2. 유지보수성 개선:
    • 주문 검증, 금액 계산 등 로직이 모듈화되어 독립적으로 수정 가능.

Spring AOP와 결합하면 예외 로깅이나 실행 시간 측정을 추가하여 리팩토링된 코드를 더욱 효율적으로 관리할 수 있습니다.

수업 내용 필기 정리.

This post is licensed under CC BY 4.0 by the author.