inflearn logo
강의

講義

知識共有

Java/Spring ジュニア開発者のための誤解

ProductService부분에서 리팩토링 언급 질문

387

wwqe

投稿した質問数 7

1

안녕하세요. 강의 너무 잘 듣고 있습니다.

섹션2의 '스프링에서 OOP와 안티패턴 : Transactiojn script' 회차를 듣던 중 10분 42초 부분에서 ProductService 코드를 리팩토링하고 싶다고 말씀해주셨는데 어떤 부분에서 리팩토링 하고 싶으신건지 궁금합니다!! 제 부족한 지식으론 딱히 건드릴게 보이질 않아서요 ㅠㅠ

※ 3년차 개발자이지만 회사 내 사수가 없어 좌절하고 있던 시기에 우근님의 강의를 듣는 순간 가뭄의 단비와 같으며 세상에서 가장 달콤한 술을 먹은 것 마냥 취하게 해주셔서 감사합니다..

java spring 객체지향 소프트웨어-테스트

回答 2

1

kok202

안녕하세요. 답변이 늦어 죄송합니다. AI가 대신 답변을 달아줬지만, 강의를 잘 들어주셨다니 저도 기쁩니다.

근래에 출판사로부터 좋은 제의를 받아 집필하느라 정신이 없었습니다. 이미 답에 대한 해답을 얻으셨을 수도 있고 아니었을 수도 있겠네요. 근 2달이 다 되어 가는 질문이라 면목이 없네요.

강의 이상의 추가적인 리팩토링을 하는 것에 대해서는 지나치게 개인적인 견해라서 차라리 넣지 않는 게 낫겠다고 생각했었습니다. 그래서 강의에 넣지 않았었고요. 따라서 아래는 그냥 참고만 해주시면 감사하겠습니다.

  1. CQRS를 적용할 것 같습니다. Repository를 Writer와 Reader로 분리하고 도메인도 ModelReadonly와 ModelEditable로 분리하거나, User 모델은 Readonly로 두고 User 모델에 변경을 요청하기 위한 UserUpdateCommand 같은 모델을 만들 것 같습니다.

  2. Price를 도메인으로 분리할 것 같습니다. 실제로 e커머스 애플리케이션을 개발하는 예시를 찾아보면 Money 같은 정보를 모델을 분리하는 예시를 자주 볼 수 있습니다. 이는 가격이라는 모델이 논리적 응집도에 의해 행동(메서드)을 갖춰야 하는 경우가 상당히 자주 생기기 때문입니다. ex. https://github.com/madvirus/ddd-start/blob/master/src/main/java/com/myshop/common/model/Money.java

  3. 하다못해 Price는 BigDecimal, BigInt, long 같은 타입이어야 합니다. 이는 PPT를 다 만들고 나서야 아차 싶었습니다. int는 가격을 표기하기에 너무 작은 값입니다. 😭

  4. ProductService의 이름도 영 별로라는 생각입니다. 예시에서는 맥락이 없으니 어쩔 수 없이 이러한 코드를 만들어 설명했지만, 가격을 계산하는 기능은 ‘상품을 주문한다’에 초점을 맞추어 접근하는게 더 나을 것 같습니다. Order라는 새로운 모델의 필요성을 이야기 하는 겁니다.

 

부족하지만 답변이 되었으면 합니다. 다 적고 보니 강의에서 괜한 말을 했구나 싶기도 하네요. 제가 너무 늦게 답변을 달아 언제 이 답변을 보실지는 모르겠습니다. 보시는 그날, 좋은 하루 되시길 바랍니다. :)

0

wwqe

바쁘신데 답변달아주셔서 감사합니다 ㅠㅠㅠㅠㅠ 테스트 강의도 잘듣고있습니다 복받으세요!!

-2

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

강의를 잘 들으셨다니 기쁩니다. 강의에서 ProductService 부분에서 리팩토링을 언급한 부분은 강의 내용과 함께 참고하셔야 할 것 같습니다.

제가 추측해본다면, ProductService에서 비즈니스 로직과 프레젠테이션 로직이 섞여있는 현재 코드를 더욱 깔끔하고 가독성 높은 코드로 개선하는 리팩토링을 생각하시는 것 같습니다. 비즈니스 로직과 프레젠테이션 로직을 분리하는 방법을 고민하시면 될 것 같아요.

더욱 자세한 내용이 궁금하시다면, 이와 관련된 Spring Framework 공식 문서나 관련 서적들을 참고해보시면 도움이 될 것입니다.

궁금하신 점이나 더 자세한 질문이 있다면 언제든지 댓글로 문의해 주세요. 좋은 하루 보내세요 :)

주니어 개발자가 더 나아가기 위한 조언을 부탁 드려도 될까요?

0

89

1

Repository 인터페이스 위치

0

71

1

Rest API - 많이하는 실수 에서 복수형

0

402

1

패키지 구조에 대한 질문

0

131

1

의존하는 객체 final 선언 질문드립니다.

0

159

1

의존성 주입에서 파라미터 주입과 필드 주입 관련 질문 드립니다.

0

183

1

강의내용 중 Fake Repository 질문

0

284

1

변하는 값을 추상화 시켜라

0

306

1

외래키를 지양하라는 질문에 대한 궁금증

0

2995

2

안녕하세요 아랫분 질문에 서 궁금한점이 있어서 질문드립니다

0

452

2

@Entity != RDB Table에 대한 질문입니다.

1

496

2

의존성조언에서 UserService의 login은 Clock에 의존하는지 모르지 않나요?

0

462

2

MySQL 사용에 대한 조언 질문있습니다.

0

865

2

강의와 크게 상관은 없지만 공부의 방향성에 대해서 질문합니다.

1

635

2

진짜 객체지향과 테스트하기 쉬운 코드를 위헤서는 jpa가 의미없는게 아닌가하는 생각이 들어요

2

1855

2

c. Collection,Map 질문

1

536

2

fake Repository로 테스트를 진행하려고 합니다,

1

1175

3

DB 엔티티와 도메인 분리

3

4700

2

도메인 객체 질문

1

582

2

Controller / application Service / Domain 의 역할 구분

1

1413

2

테스트 하기 쉬운 코드에서 테스트의 범위?

1

675

2

스프링에서 서비스 레이어(Apllication Layer) 테스트에 대한 질문입니다.

2

895

2

Repository 대신 Reader / Writer 사용 질문있습니다!!

1

709

2

IoC != DI에 대한 질문입니다.

1

833

2