본문 바로가기

Swift 공부

ViewModel에 Driver를 사용하면 안티패턴?

지난번 면접 질문들을 회고하고 복기하는중 생각이 난 질문이 있는데


MVVM Input Output 패턴을 사용하고있고 Input , Output값을 Driver로 전달하고 있기에 (메인쓰레드에서 사용성을 보장하기위해)

ViewModel에서 RxCocoa를 import하고 있는데 RxCocoa를 import를 하고 있는게 안티패턴이라고 한다 (설명을 해주시기에 RxCocoa는 View와 관련된 라이브러리 이기에 안티패턴이라고 한다)

그래서 고민을 면접 당시에는 뭔가 생각이 잘나지 않아 아 그런가요 하고 넘어갔는데 지금와서 생각해보니 조금 이상한게 있다

RxSwift의 Github에 나오는 RxCocoa 소개글

  • RxCocoa: Provides Cocoa-specific capabilities for general iOS/macOS/watchOS & tvOS app development, such as Shared Sequences, Traits, and much more. It depends on both RxSwift and RxRelay.

번역하면 일반

iOS/macOS/watch용 코코아 전용 기능 제공공유 시퀀스, 특성 등과 같은 OS 및 tvOS 앱 개발 RxSwift와 RxRelay에 모두 의존합니다.

꼭 UI에 관련된것을 제공하는것이 아닌 UI  + 시퀀스 특성과 같은 다양한 것들을 주기에 과연 UI에 한정된 라이브러리가 맞나? 라는 의심이 들었고 자료를 찾으면서 공부를 해봐도 조금 애매하다 생각이 들어 세상의 많은 개발자들은 어떻게 사용하고있나가 궁금해져 Github의 자료들을 찾아 공부했고

실제로 많은 스타를 받은 MVVM의 아키택처를 보게되면 나와같이 ViewModel에서 input , output을 Driver로 전달하고 있는 예제들을 찾아 볼 수 있었다. 그렇다면 그 사람의 말이 틀린거냐? 아니다 내가 실수한건 그 사람의 논리도 내가 구현한 코드도 틀린건 없었고 그저 맞춰가는 과정중 생길수있는 과정들이였고 면접때 난 그 사람의 질문에 아 그런가요 가 아니라 저는 이러이러한 생각으로 이렇게 생각이 들어서 이렇게 사용했다 라는 답변이 나왔어야 했었고 그 사람도 그런 답변을 원하지 않았을까 생각이 들고 또 하나 배워가는 면접의 경험이였다. 

 

 

 

 

가장 대표적인 예

https://github.com/sergdort/CleanArchitectureRxSwift

 

GitHub - sergdort/CleanArchitectureRxSwift: Example of Clean Architecture of iOS app using RxSwift

Example of Clean Architecture of iOS app using RxSwift - GitHub - sergdort/CleanArchitectureRxSwift: Example of Clean Architecture of iOS app using RxSwift

github.com

 

 

'Swift 공부' 카테고리의 다른 글

Tuist 3.x 라이브러리 등록 방법  (0) 2022.04.17
Tuist 모듈화 공부 4편 클린아키텍처  (0) 2022.04.15
RxSwift Disposable 이란?  (0) 2022.04.13
Property Wrapper  (0) 2022.04.12
RxMoya를 직접 만들어서 사용해보자  (0) 2022.04.08