🧑💻 홍승현 | 🧑💻 이건준 | 👩💻 김수빈 |
---|---|---|
Kakao, Google, Apple 계정으로 회원가입, 로그인을 할 수 있어요!
온보딩 화면 | 로그인 화면 | 로그인 시도 화면 |
---|---|---|
관심사에 맞게 모임에 들어가거나 만들어보세요. 그리고 모임에서 여러 사람들과 소통하세요!
홈 화면 | 모임 생성 화면 | 댓글 작성 화면 |
---|---|---|
MVVM
- MVVM을 도입하여 뷰컨트롤러와 뷰는 화면을 그리는 역할에만 집중했고, 데이터 관리, 로직의 실행은 뷰모델에서 진행되도록 했습니다.
- UIKit 요소가 없어도 뷰에 보여질 값들을 뷰모델을 단독으로 단위 테스트하여 확인하고 검증할 수 있게 했습니다.
UseCase
- Service와 Router를 사용하여 네트워크 및 외부 프레임워크 요청을 처리, 레이어별 책임을 명확히 구분했습니다.
- ViewModel의 일부 기능을 UseCase로 분리하고 Adapter패턴을 적용하여 뷰의 재사용성과 유지보수성을 높였습니다.
Input/Output Modeling
- 뷰모델을 Input(AnyObserver)과 Output(AnyObservable)로 구상하여 뷰의 이벤트들을 Input에 바인딩하고, 뷰에 보여질 데이터를 Output에 바인딩했습니다.
- 일관되고 직관적인 구조를 유지해 뷰모델의 코드 가독성이 높아졌습니다.
- 연속된 escaping closure를 피하고, 선언형 프로그래밍에서 제공하는 높은 가독성과 rx 오퍼레이터의 효율적인 비동기처리를 위해 RxSwift를 사용하게 되었습니다.
- 데이터가 발생하는 시점에서부터 뷰에 그려지기까지 하나의 큰 스트림으로 데이터를 바인딩해주었습니다.
- 기능에 따라 화면 구성이 조금씩 차이가 있어 공통적인 부분은 상위 View Controller로부터 상속 받고 다른 구성 요소에 대하여 재정의할 수 있도록 하였습니다.
- 여러 화면에서 공통적으로 사용되는 UI 등은 별도의 Custom Class로 정의하여 View의 재사용성을 높이고자 하였습니다.