Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ProductInfo에 필요한 네트워크 관련 작업 #44

Merged
merged 14 commits into from
Feb 6, 2024

Conversation

eung7
Copy link
Contributor

@eung7 eung7 commented Feb 5, 2024

Screenshots 📸

Name
(image here)



고민, 과정, 근거 💬

  • ProductInfo에 필요한 네트워크 관련 모듈 및 파일을 구현했습니다.
  • @WhiteHyun 님이 이미 잘 구현해주셔서 거의 HomeAPI 관련 코드와 동일합니다.
  • PR이 너무 커질 것을 우려하여, View로 표시되는 작업은 다음 PR에서 작업할 예정입니다.

개인적으로 느끼는 현재 문제

제가 ProductInfo관련한 네트워크 작업을 하면서 느꼈던 문제입니다.
섣불리 스스로 고치기 전에 의견을 공유하는 것이 먼저라고 판단하여, 고친 것은 아직 아무것도 없습니다!

  • 현재 Scene별로 API가 모듈화 되어있습니다.
    ProductInfo 상세정보와 Home의 상품의 리스트와 정보가 거의 똑같아보여서..
    완벽하게 똑같은 ProductInfoProductResponse를 만드는 점이 굉장히 애매했습니다.
    따라서 지금은 ProductInfoAPI에서 HomeAPI의 Dependency를 추가하여 ProductResponse를 끌어다(?) 쓰고 있습니다.

➡️ 그래서 이것은 Scene별로 나누지 않고, 서버에서 제시한 EndPoint로 나누는건 어떨까요? (User, Search, Product)



References 📋




@eung7 eung7 added 🛜 Network Networking 🏪 Products Products View labels Feb 5, 2024
@eung7 eung7 added this to the v2.0.0 milestone Feb 5, 2024
@eung7 eung7 requested a review from a team February 5, 2024 10:05
@eung7 eung7 self-assigned this Feb 5, 2024
Copy link
Member

@WhiteHyun WhiteHyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 생각하기에는 ProductInfo 화면에서 카테고리(e.g. 음료 > 콜라)도 보여줘야하는 것으로 알고 있어서 나누는 게 맞다고 생각합니다. 지금 2.0버전에서는 지원하지 않겠지만, 디자인에서는 카테고리가 존재하니까요..!
그래서 HomeService에서 사용되고 있는 API와 상세 정보를 가져오는 API가 지금으로써는 동일할지도 모르나 나중에는 결국 분리할 수 밖에 없을 거에요.

그리고 서버 EndPoint기준으로 Service를 구성하게 된다면, 나중에 Service를 주입할 때, Service 배열을 주입해야하는 경우가 생길 수 있고, 관리포인트가 늘어난다고 생각해서 화면마다 작업하는 게 좋다고 생각하고 있습니다. :)

eung7 added 2 commits February 5, 2024 23:06
- ProductDetailResponse DTO 추가
- 같은 모듈내에서 참조하는 것을 방지
- init(decoder:) 제거
- ProductPrice init(dto:) 날짜 변환 코드 추가
@eung7
Copy link
Contributor Author

eung7 commented Feb 5, 2024

아! 카테고리가 있었군요 ㅎㅎ. 그런 맥락이라면 지금 컨벤션이 맞다고 생각됩니다!
요청 사항 모두 수정되었습니다.

  • 추가적으로 Entity의 ProductPrice를 DTO로 부터 변환할 때, 바로 dateString으로 변환되는 코드를 추가했습니다.

@eung7 eung7 requested a review from WhiteHyun February 5, 2024 14:24
- ProductPrice, yearMonth으로 변수 네이밍 변경
- 불필요한 접근 제어 제거
- 불필요한 코드 간략화
- ProductDetail, Entity 추가 및 적용
- ResponseDTO 날짜 값 iso8601으로 변경
@eung7 eung7 requested a review from WhiteHyun February 6, 2024 01:10
- 이니셜라이저에 불필요한 코드 제거
@eung7 eung7 requested a review from WhiteHyun February 6, 2024 09:12
@eung7
Copy link
Contributor Author

eung7 commented Feb 6, 2024

수정되었습니다.
포메팅 관련된 로직은 다음 PR때 ViewModel에서 구현하도록 하겠습니다. 👍

- 불필요한 접근제어 삭제
@eung7 eung7 requested a review from WhiteHyun February 6, 2024 12:43
Copy link
Member

@WhiteHyun WhiteHyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다 :)

@WhiteHyun WhiteHyun merged commit 0568570 into main Feb 6, 2024
2 checks passed
@WhiteHyun WhiteHyun deleted the feature/productinfo/40 branch February 6, 2024 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🛜 Network Networking 🏪 Products Products View
Projects
Development

Successfully merging this pull request may close these issues.

행사 제품을 가져온다.
2 participants