Skip to content

Module의 Coordiantor 작성 시 유의 사항 및 약속

이강호 edited this page Jul 3, 2024 · 1 revision

Coordinator 생성 규칙

  1. 관련 있는 플로우 집합 당 Coordinator 하나
  2. HomeFlow() 는 해당 코디네이터의 시작 화면으로 약속하고, start() 시에 호출되게 override하기
  • Coordinator 사용자는 start()만 할 뿐, 어떤 화면이 호출될지 고민할 필요 없음.
  1. 예외, 페이지가 분리되어서 사용되는 경우가 생기는 경우, 해당 페이지를 위한 Coordinator 별도로 생성 및 분리
  2. 즉, 선제적으로 한 화면 당 코디네이터를 만들지 말고, 재사용이 확인되면 분리할 것. 따라서 다른 모듈의 피그마도 확인하고 작업하기!
  3. Coordinator간 데이터 전달은 Delgate 패턴을 이용한다.
  • 이 때 Listener로 네이밍한다.
  1. VM -> Coordinator의 명령 전달은 Delegate패턴을 이용한다.

3번에 대한 예시

  • SignUp Module의 문의하기 화면이 MyPage에서 사용 됨
  • Auth의 휴대번호 입력 및 인증화면이 MyPage에서 사용 됨, 휴대번호 입력과 인증화면 두개의 flow를 가진 Coordiantor 생성

고민할 점

재사용되는 화면의 소유권은 어느 모듈이 가져야 하는가?

  • flow 상 먼저 사용되는 모듈이 가져야하는가?
  • 새로운 피처-모듈이 아닌 모듈을 만들어서 거기에다 둬야하나?

Coordinator 재사용이 아니라, 화면 재사용을 위한 Factory를 만드는 것은 어떤가?

  • Coordinator가 재사용의 단위가 아니고, 모듈별 Factory를 만들어서, Coordiantor가 Factory를 사용함.

재사용되는게 로직이 아니고 화면만 재사용해야하면 어떻게 해야 하는가?

  • 프로필 화면의 경우, Chat과 Like 모듈에서 재사용이 되지만, Like에서는 추가 기능이 더 붙음.

코디네이터간 데이터 전달은 어떻게 하는 게 좋을까?

  • Reactive니까 PublishSubject를 이용할건지, delegate를 이용할 건지