simoniful/iOS_FastCampus_Tutorial

COVID 예방접종센터 회고

Opened this issue · 0 comments

고민

  1. Swift UI에서 사용하는 prefix의 의미
  2. Combine과 RxSwift의 차이
  3. Preview 구성의 간소화
  4. API Header 및 Query 구성에서 휴먼 에러

회고

  1. @State, @binding, @published, @ObservedObject

    • @State - 뷰 자체가 가지는 상태 값
    • @binding - super 뷰나 viewModel로 부터 주입받은 프로퍼티
    • @published - 프로퍼티의 변경이 있을 때 자동으로 바인드 되어 있는 객체에게 WillSet으로 변경을 전달
    • @ObservedObject - ObservableObject에 대해서 뷰가 외부 객체의 상태(state)를 관찰할수 있고, 중요한 것이 변경될 때 알림을 받음
      이 외에도 환경 변수 등등 다양한 wrapper가 있고 사용 목적이 있음
  2. Combine vs. RxSwift
    구성에 있어서 선언형 프로그래밍을 하는 것에 있어서는 동일하다. 하지만 가독성과 성능 측면에서 가장 큰 차이가 있다. 결정적으로 UIKit 환경과 SwiftUI 환경이라는 차이가 확실히 있으며, 성능적인 측면과 용량 활용 측면에서도 Combine이 월등하다. 하지만, 아무래도 아직까지는 iOS 버전 상에서 제한점이 있기에 두 가지 사용 측면을 모두 익히고 최대한 코드를 구체적으로 잘 분리하는 거에 초점을 맞추고 병행적으로 학습을 진행하는 것이 효율적으로 보인다.

  3. Preview 구성 - Dummy, Prototype
    구성하면서 가장 귀찮은 부분은 계속해서 더미 데이터를 넣어서 뷰를 확인해야 한다는 점이다. 백엔드와 협업을 한다면 계속해서 엔티티마다 더미를 하나씩 받아서 구성할 수 있겠지만, 직접 하려니 여간 귀찮은 일이 아니다. 물론 테스트 기반 코드를 짜는 경우라면 더미를 만드는 건 불가피 하겠지만.. 협의를 통해서 백단에서 더미를 구성하고 맵핑 하는 걸로 작업하는게 나중을 생각했을 때 유지보수가 확실할 듯. 추가적으로 더미를 토대로 테스트 코드를 짜면서도 BDD 시나리오를 잘 유지한다면 시간은 걸릴지라도 모두가 이해할 수 있는 코드를 구성하는게 어느 정도는 가능하다고 생각한다.

    확실히 기획 단계에서도 프로토타입 등을 구성하여 개발자가 참여할 수 있는 환경이라면 , SwiftUI를 활용하여 빠르게 의견을 나누고 디자인과 협업하는게 가능할 거라 생각한다. 확실히 UIKit을 활용하여 개발할 때 보다 제한점은 있지만, 코드의 길이도 굉장히 짧아지고, 로직과 분리는 방식만 잘 이해하고 State 관리에 대해서 생각을 한다면 보다 초기 단계에 있어서 기획을 구체화하는데 유용한 수단이 될 수 있다.

  4. API Header 및 Query 구성
    API, Network 구조체를 구성하여 사용하는 건 익숙해졌다. 하지만 역시나 늘 구성에 있어서 컨벤션과 오타를 확인하고 붙여넣기하는 습관을 들이자. header 구성요소 오타 하나로 1시간 삽질은 너무하니까

참고

👉🏻 What is the @Published property wrapper?
👉🏻 UIKit vs. SwiftUI
👉🏻 RxSwift vs. Combine