리팩토링_사례_실습
리팩토링_사례_실습
필기 가자
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. 사례 분석 및 실습
- 단축키 실습.
- Extract Method:
- 긴 메서드의 일부 코드를 새 메서드로 추출.
- 단축키:
Ctrl + Alt + M(Windows) 또는Cmd + Option + M(Mac).- Extract Class:
- 클래스 내 관련 필드와 메서드를 별도 클래스로 이동.
- 단축키:
Ctrl + Shift + Alt + T(Windows) 또는Cmd + Shift + Option + T(Mac).- Rename Refactor:
- 변수, 메서드, 클래스 이름을 변경하여 가독성 향상.
- 단축키:
Shift + F6.
- OrderService 에서 오더가 변경되는 프로세스를 OrderProcessService로 분리함.
4.5 리팩토링 효과
- 가독성 향상:
- 각 클래스와 메서드가 단일 책임을 가지므로 코드 이해가 쉬워짐.
- 유지보수성 개선:
- 주문 검증, 금액 계산 등 로직이 모듈화되어 독립적으로 수정 가능.
Spring AOP와 결합하면 예외 로깅이나 실행 시간 측정을 추가하여 리팩토링된 코드를 더욱 효율적으로 관리할 수 있습니다.
수업 내용 필기 정리.
This post is licensed under CC BY 4.0 by the author.