inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

주문 - 코드 느끼기

OrderKeyGenerator 인스턴스화 generate() 질문

해결된 질문

81

ricepotato

작성한 질문수 2

1

안녕하세요! 수업 잘 듣고 있습니다.

사소한 내용이긴한데..

OrderService.create 에서 OrderKeyGenerator 객체를 를 주입받아 generate() 를 호출해서 orderKey 를 생성하는 부분에서

OrderKeyGenerator class 는 상태를 가지지도 않고 Property 를 가지지도 않는데 static method, 함수로 구현 되어도 되지 않았을까 하는 생각이 들었는데요.

어떤 고려사항이 있는지 궁금합니다.

class OrderKeyGenerator {
    fun generate(): String {
        return Base64.getUrlEncoder().withoutPadding().encodeToString(
            ByteBuffer.allocate(16).apply {
                UUID.randomUUID().also {
                    putLong(it.mostSignificantBits)
                    putLong(it.leastSignificantBits)
                }
            }.array(),
        )
    }
}

kotlin spring-boot 도메인 dbms/rdbms backend

답변 1

1

제미니

안녕하세요 질문 감사드립니다!
절대 사소하지 않고 아주 중요한 부분입니다! 좋은 질문 감사드려요!

저는 일반적으로 대부분 static으로 구성하지 않는편 이긴합니다
이는 기본적으로 테스트 구성 시 mocking이 불편하기 때문인데요 (mocking이 안 되는 것은 아님)

그 외에 기준은 개념적인 중요도의도를 나타내는 것을 중요하게 생각합니다

그런 측면에서 OrderKey는 단순하게 Key를 생성하는 역할을 하고 있지만 이것의 의미가 중요한 부분이라 생각하고, 이 컴포넌트가 있다는 것의 의도를 나타내고 싶었기 때문에 빈으로 구성했다라고 봐주시면 좋을 것 같습니다

사실 우리가 코드를 볼때 클래스의 책임과 연관성을 보여주는 많은 정보들이 있는데
저는 가장 쉽게 많이 먼저 보는 것이 생성자 부분이라고 생각합니다

그런 측면에서 OrderKeyGenerator 를 빈으로 구성해서 굳이굳이 주입을 받으려 한 것은
Order를 생성하는 플로우에서 OrderKey를 만드는 부분을 강조하고 싶었던 의도도 있습니다ㅎㅎ

 

이건 어디까지나 제 생각과 기준이다보니 참고만해보시면 좋을 것 같습니다!


모쪼록 답이 되었길 바랍니다! 감사합니다!

0

ricepotato

이해했습니다. 감사합니다!

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

1

44

1

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

1

39

2

SettlementTargetRepository Jquery 질문

1

42

2

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

1

56

2

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

1

64

2

제미니님 안녕하세요!

1

71

2

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

1

77

2

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

1

72

2

새로 개발한다면 구현 순서

1

128

1

의존 방향에 대한 고민

1

119

2

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

1

93

2

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

1

91

1

PG 결제 승인 로직

1

123

2

QnA에서 Join 필드 표현법

1

85

1

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

1

99

2

굿

1

104

1

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

1

134

2

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

1

132

2

CouponService 의존성 의문

1

92

2

상품 목록 조회 고도화 질문

1

107

2

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

1

120

2

제품상세 코드 느끼기

1

138

2

격벽의 순환 참조(?)

1

109

2

결제 관련 서킷 브레이커 전략, 데이터 정합성 및 타임아웃 설정 질문

2

173

2