owned this note changed 3 years ago
Linked with GitHub

211101 회의록

오늘 해야할 일

  • Coordinator 스터디
  • CoreData 스터디 (나중에)
  • 프로젝트 초기설정(Pair Programming)

Issue 템플릿

작업내용

  • 주저리주저리 이렇구러젛구
  • 주절주절
  • 점심 뭐먹지?

특이사항

  • 늦잠잠
  • 점심뭐먹을지 심히 고민됨

PR 템플릿

포함 이슈 목록

  • #1 : 점심 메뉴 고민하기
  • #2 : 늦잠 안잘 방법 고민하기

특이사항

  • 머지하기 전 같이 얘기해보면 좋을만한 사항들

셀프체크리스트

  • Merge 하는 브랜치가 올바른가?
  • 코딩컨벤션을 준수하는가?
  • PR과 관련없는 변경사항이 없는가?
  • 내 코드에 대한 자기 검토가 되었는가?
  • 변경사항이 효과적이거나 동작이 작동한다는 것을 보증하는 테스트를 추가하였는가?
  • 새로운 테스트와 기존의 테스트가 변경사항에 대해 만족하는가?

이슈 라벨 관리

  • 작업 내용

    • ✨Feature
    • 🎨Layout
    • 🚨Fix
    • ♻️Refactor
  • Architecture

    • View
    • ViewModel
    • UseCase
    • Repository
    • Service
    • Entity

Coordinator에 대한 정리..

  • ViewController는 말 그대로 View만을 관리해야한다. 로직은 ViewModel 이 담당하게되며 ViewControllerViewModel 에 이벤트를 전달하는 역할만 해야한다. 따라서 ViewCoordinatorDelegateViewModel이 들고있어야한다.
  • ViewModel 에서 화면 전환이 이뤄져야 하는 경우엔 ViewCoordinatorDelegate 를 이용해준다.
  • Coordinator는 child Coordinator를 가져야한다. (ViewController는 안들고 있어도 된다!)
  • CoordinatorUIKit을 import 하고 있는 ViewModel보다 상위에 해당하는 객체이기때문에, Protocol을 이용해 의존성을 역전시켜야 한다.
  • ViewController가 dismiss될 때에 Coordinator도 제거해야하기 때문에, Coordinator는 부모 Coordinator의 레퍼런스를 가지며, 부모로부터 자신을 제거하는 함수를 구현해야한다.
class Coordinator {
    var childCoordinators: [Coordinator] = []
    var presenter: UINavigationController
    private let parentCoordinator: Coordinator?

    
    init(presenter: UINavigationController, parent: Coordinator? = nil) {
        self.presenter = presenter
        self.parentCoordinator = parent
    }
    
    func removeFromSuperCoordinator() {
        guard let parent = self.parentCoordinator else { return }
        parent.childCoordinators = parent.childCoordinators.filter{ $0 != self }
    }
}

extension Coordinator: Equatable {
    static func == (lhs: Coordinator, rhs: Coordinator) -> Bool {
        return lhs === rhs
    }
}

버그 이슈 템플릿

요약

재현 방법

예상 결과

실제 결과

Select a repo