📚 오늘 공부한 내용
오늘은 프로젝트에서 장바구니 기능을 구현하면서 Entity 설계와 비즈니스 로직 배치에 대해 많은 고민을 했다. 설계를 개선하는 과정에서 객체지향 원칙과 책임 분리의 중요성을 체감할 수 있었다.
Entity 설계 개선 과정
초기 설계의 문제점
- CartItem Entity에 store 정보를 직접 참조
- CartItem에 menu_id도 있어서 store 정보가 중복되는 구조
- 장바구니에 아이템을 추가할 때마다 store.id를 통해 같은 가게인지 체크
- 비즈니스 로직이 CartService에 산재되어 복잡도 증가
개선된 설계
- Cart Entity에 store_id 추가: 장바구니 자체가 특정 가게에 종속되도록 설계
- Cart Entity에서 검증 로직 처리: 같은 가게인지 체크하는 로직을 Cart 내부로 이동
- CartItem은 menu_id만 관리: 불필요한 store 참조 제거로 책임 명확화
설계 개선의 이점
1. 단일 책임 원칙 (SRP) 적용
- Cart가 "같은 가게의 메뉴만 담을 수 있다"는 규칙을 직접 관리
- CartItem은 단순히 메뉴와 수량 정보만 관리하는 역할로 단순화
2. 서비스 계층 단순화
- CartService의 복잡한 검증 로직이 Entity로 이동
- 서비스는 비즈니스 흐름 조율에만 집중 가능
- 코드 가독성과 유지보수성 향상
🎯 느낀 점
설계는 한 번에 완벽할 수 없고, 구현하면서 문제점을 발견하고 개선해 나가는 과정이 중요하다. 오늘처럼 중복을 발견하고 책임을 재배치하는 리팩토링 경험이 실력 향상에 큰 도움이 될 것 같다.
같은 팀원의 코드리뷰도 나를 매일 매일 성장하게 해주는 것 같다.
'👍코드 회고' 카테고리의 다른 글
| N+1 (10.17) (0) | 2025.10.17 |
|---|---|
| 리팩토링 vs 오버 엔지니어링 (10.16) (0) | 2025.10.16 |
| 서비스단 깔끔하게 하기 (10.02) (0) | 2025.10.03 |
| 스프링 개발 회고 (10.01) (0) | 2025.10.01 |
| 스프링 개발 회고 (09.30) (0) | 2025.10.01 |