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

[정주] Pillyze - 음식 리스트 표시, 테스트 코드 작성 #9

Merged
merged 7 commits into from
Jul 16, 2024

Conversation

jeongju9216
Copy link
Contributor

@jeongju9216 jeongju9216 commented Jul 15, 2024

📓 Overview

  • 음식 리스트를 표시했습니다.
    • ViewModel에서 음식 리스트 데이터를 읽으면 AddDietView에서 표시합니다.
    • 리스트 아이템을 탭하면 Selection이 toggle 되도록 구현했습니다.
  • ViewModel 테스트 코드를 작성했습니다.

🤔 고민 내용

View에서 ViewModel을 최소로 사용하는 방법

  • ViewController와 View를 함께 쓰다보니 ViewModel의 데이터 흐름이 파악하기 힘들어지는 것을 경계했습니다.
  • View에서 ViewModel을 최소한으로 사용하는 방법을 고민했습니다.
  • View에서 ViewModel 전체를 들고 있을 필요는 없다고 생각했습니다.
  • View에서는 ViewModel.Output만 가지고 있어서 데이터만 전달받아 body에 표시하도록 구조를 잡아봤습니다.
  • SwiftUI 프레임워크처럼 ViewController에서 매번 View 구조체를 생성하는 구조도 고민해봤습니다.
    • ViewModel.Output이 @published가 아니라 CurrentValueSubject가 됩니다.
    • SwiftUI의 View 장점 중 하나인 @State를 사용하지 못한다는 단점이 있습니다.
    • 이건 SwiftUI를 너무 좁게 사용하는 것이라 생각해서 제외했습니다.

ViewController의 Input과 View의 Input을 분리하는 방법

  • ViewController가 ViewModel로 전달하는 Input과 View가 ViewModel로 전달하는 Input을 분리해보았습니다.
  • ViewModel이 VC와 View 양쪽에서 Input을 받으면 Input 흐름이 두 개가 되어 데이터 흐름 파악이 어려워질 것으로 예상됐습니다.
  • 따라서 View는 ViewController로 Input하고, ViewController가 ViewModel로 Input하는 구조로 작성해봤습니다.

📸 Screenshot

Simulator.Screen.Recording.-.iPhone.15.Pro.-.2024-07-15.at.23.40.01.mp4

View에서 ViewModel 전체를 가지고 있지 않아도 된다고 생각하여 Output만 갖도록 수정했습니다.
AddDietView에서 Input을 전달하지 않기 위해 별도의 PassthroughSubject를 정의했습니다. ViewModel로 Input하는 것은 ViewController만 하도록 구현하고 싶었습니다.
@jeongju9216 jeongju9216 added the 고민 내용 고민 내용을 작성하는 경우 사용하세요. label Jul 15, 2024
@jeongju9216 jeongju9216 added this to the 필라이즈(Pillyze) milestone Jul 15, 2024
@jeongju9216 jeongju9216 changed the title [정주] Pillyze - 음식 리스트 표시, 테스트 코드 작성 (고민 내용 작성 중) [정주] Pillyze - 음식 리스트 표시, 테스트 코드 작성 Jul 16, 2024
@jeongju9216 jeongju9216 merged commit a87c868 into main Jul 16, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
고민 내용 고민 내용을 작성하는 경우 사용하세요.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant