inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

제미니의 개발실무 - 커머스 백엔드 기본편

상품 상세 - 코드 느끼기

findSections질문

해결된 질문

92

Cola

작성한 질문수 36

1

안녕하세요!

findSections의 return부분을 떼어다가 ProductSectionSevice에 옮기는 부분이 있는데

옮기기 전과 후의 차이가 어떤 차이가 있는건지 알 수 있을까요? 저의 실력이 부족해 잘 이해가 되지 않아 질문드립니다.

kotlin spring-boot 도메인 dbms/rdbms backend

답변 2

1

제미니

안녕하세요! 질문 감사드립니다

이 부분은 기존에 ProductSectionService 가 ProductFinder 를 사용하고 있습니다
이걸 말씀해주신 옮긴 후를 보시면 ProductSectionService 가 ProductSectionRepository 만 알게 되는 형태가 됩니다

또한 ProductFinder 도 기존에는 Product, ProductCategory, ProductSection 세 개의 Repository 를 알고 있었는데 이 수정 이후에는 Product, ProductCategory 두 개의 엔티티만 접근하는 형태가 됩니다

해당 강의 10:29 쯤 설명이 나오듯 이 변경 자체로 인해 ProductFinder 는 더 Product 개념 기준의 응집 된 엔티티만 알고있는 형태가 됩니다!

이 관점에서는 ProductSection 은 Product 랑 가깝지 않다 (상세 노출을 위한 메타 정보이므로 라는 논리) 가정을 하고 수정을 해보는 것 입니다!

이런 느낌을 느껴보시려면 수정 후 수정 된 클래스들이 생성자, Import 를 한번 훑어보시면 서로 관계가 어떻게 변했는지 느낌을 느껴보실 수 있을 것입니다!


추가로 궁금하신 것이 있다면 편하게 또 질문 주십쇼!
모쪼록 답이 되었길 바랍니다! 감사합니다! 😃

0

Cola

감사합니다

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. Cola님!

findSections의 return 부분을 떼어서 ProductSectionService로 옮기는 작업에 대해 궁금하신 점을 이해하였습니다. 이는 소프트웨어 설계와 관련된 중요한 주제인데요, 유사한 상황에서 다양한 접근 방식이 있을 수 있습니다.

  1. 응집도와 책임 분리: 기본적으로 함수나 메서드의 위치를 변경하는 작업은 응집도를 높이고 각 클래스나 객체가 자신에게 주어진 책임만을 수행하도록 하기 위한 것입니다. ProductFinder에 많은 책임을 주기보다는, 각 역할이 명확하게 분리되어 있는지를 확인하고, 각 클래스가 특정 역할을 하는 것이 좋습니다.

  2. 재사용성과 유연성: 특정 로직을 별도의 서비스로 이동하면, 그 서비스를 다른 곳에서도 재사용할 수 있게 되어 코드의 유연성과 재사용성을 높일 수 있습니다. 이는 궁극적으로 유지보수 비용을 줄이는 데 도움이 됩니다.

  3. 코드의 명확성: 메서드의 위치를 변경함으로써, 코드가 보다 직관적으로 읽히고 이해되기 쉽게 합니다. 이는 개발자 간의 커뮤니케이션을 원활하게 하고, 코드를 이해함에 있어서도 큰 도움을 줄 수 있습니다.

이와 관련된 추가 설명을 위해, 기존에 질문하셨던 이들의 답변에서 유사한 상황을 참고할 수 있는 링크를 확인해 보겠습니다:

위 링크에서 보듯이, 코드를 리팩토링하고 책임을 분리함으로써 얻을 수 있는 이점을 담고 있습니다. 특정 메서드의 위치를 변경하는 것은 역할의 명확성과 재사용성, 유지보수를 생각한 결정입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

궁금한점이 여러개 생겼습니다.

1

38

1

다양한 관점의 코드 경험을 위해 개선하지 않은 코드

1

55

1

histories() 응답에 PointHistory.id를 포함한 이유가 궁금합니다/

1

44

2

SettlementTargetRepository Jquery 질문

1

48

2

부가 기능을 이벤트 핸들러로 분리하는 기준이 있을까요?

1

60

2

엔티티의 pk 를 0으로 초기화하시는 이유가 있을까요??

1

67

2

제미니님 안녕하세요!

1

77

2

개념 간 격벽 분리와 목록 조회 시 발생하는 참조 구조

1

85

2

프로덕트와 프로덕트카테고리 사이의 삭제 정책

1

76

2

새로 개발한다면 구현 순서

1

136

1

의존 방향에 대한 고민

1

125

2

어드민(Back-office)에서 예약 변경 시, '할인 조건 재검증(쿠폰 회수)' vs '기존 혜택 유지' 중 어떤 정책이 일반적인가요?

1

98

2

OrderKeyGenerator 인스턴스화 generate() 질문

1

84

1

외부 API 통합 시 데이터 제어 범위 설계 질문

1

98

1

PG 결제 승인 로직

1

130

2

QnA에서 Join 필드 표현법

1

90

1

결제서비스 콜백 동시성문제 가능성

1

110

2

굿

1

109

1

도메인/엔티티 분리 상황에서 쓰기 작업 하는 방법

1

137

2

도메인 객체와 엔티티 객체 사용

1

139

2

CouponService 의존성 의문

1

98

2

상품 목록 조회 고도화 질문

1

112

2

표현 계층에서의 접근 지점이 다양해지는것과 이를 해결하기 위한 파사드의 도입에 대해 제미니님의 생각이 궁금합니다.

1

123

2

제품상세 코드 느끼기

1

144

2