장바구니 코드 속 store_id는 어디에 둘까? (10.15)
2025. 10. 15. 22:09

📚 오늘 공부한 내용 

오늘은 프로젝트에서 장바구니 기능을 구현하면서 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