Skip to content

RxSwift & MVVM-C 리뷰 요청드립니다#23

Open
just1103 wants to merge 1 commit intomasterfrom
refactor
Open

RxSwift & MVVM-C 리뷰 요청드립니다#23
just1103 wants to merge 1 commit intomasterfrom
refactor

Conversation

@just1103
Copy link
Owner

@just1103 just1103 commented Sep 2, 2022

콘 안녕하세요. @protocorn93
RxSwift와 MVVM-C를 적용한 프로젝트입니다.
RxSwift와 MVVM-C 아키텍쳐를 제대로 사용하고 있는지, 문제점 또는 개선방향에 대해 여쭙고자 리뷰 요청드렸어요.

현업에 계셔서 바쁘실텐데 흔쾌히 응해주셔서 정말 감사합니다. 🙏🙏
대략적인 내용이라도 피드백 주시면 큰 도움이 될 것 같아요.

아래에 프로젝트 구조를 간단히 나타냈습니다.

MVVM-C

MVVM

  • ViewController (View)는 화면을 그리는 역할을 담당하고, ViewModel은 데이터 및 비즈니스 로직 관리, 화면 전환 요청 등을 담당하도록 역할을 분리했습니다.

Input/Output Modeling

  • ViewModel의 Nested Type으로 Input 및 Output을 추가했습니다.
  • View로부터 전달된 이벤트는 Input을 통해, View로 전달할 데이터는 Output을 통해 Binding 했습니다.
  • 일관성 있는 구조를 통해 직관적인 이해가 가능하며 코드 가독성을 개선할 수 있었습니다.

Coordinator

  • 화면 전환 역할을 전담하고, 의존성 관리를 위해 Coordinator를 활용했습니다.

Coordinator

TabBarViewController를 띄우는 CoordinatorNavigationController (이하 부모 Coordinator 및 Navigation), 그리고 특정 TabBar 내부에서 화면을 이동하는 CoordinatorNavigationController (이하 자식 Coordinator 및 Navigation)을 분리했습니다. 또한 부모 Coordinator 및 자식 Coordinator는 Delegate Pattern을 활용하여 소통하도록 했습니다.

또한 사용자가 게임중일 때 몰입할 수 있도록 Game 화면에서는 부모 Coordinator를 통해 NavigationBar 및 TabBar가 숨겨지도록 했고, 게임 대기/결과 화면에서 다시 보이도록 구현했습니다. 그리고 함께/혼밥메뉴확인 탭자식 Coordinator에는 Game 관련 화면을 관리하는 별도의 GameCoordinator를 추가하여 중복 코드를 최소화하고, 코드 재사용성을 개선했습니다.

이외 의문점이 있으시면 언제든 연락 부탁드려요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant