Search
▫️

PLUB

취미 생활, 소모임을 구하고 싶다면? | PLUB

SeungHyun Hong / GunJun Lee / Subin Kim
Date: 2022. 11 ~ 2023. 05
온보딩 화면
로그인 화면
홈 화면
댓글 작성 화면
모임 생성 화면

Architecture

MVVM

MVVM을 도입하여 뷰컨트롤러와 뷰는 화면을 그리는 역할에만 집중했고, 데이터 관리, 로직의 실행은 뷰모델에서 진행되도록 했습니다.
UIKit 요소가 없어도 뷰에 보여질 값들을 뷰모델을 단독으로 단위 테스트하여 확인하고 검증할 수 있게 했습니다.

UseCase

Service와 Router를 사용하여 네트워크 및 외부 프레임워크 요청을 처리, 레이어별 책임을 명확히 구분했습니다.
ViewModel의 일부 기능을 UseCase로 분리하고 Adapter패턴을 적용하여 뷰의 재사용성과 유지보수성을 높였습니다.

Input/Output Modeling

뷰모델을 Input(AnyObserver)과 Output(AnyObservable)로 구상하여 뷰의 이벤트들을 Input에 바인딩하고, 뷰에 보여질 데이터를 Output에 바인딩했습니다.
일관되고 직관적인 구조를 유지해 뷰모델의 코드 가독성이 높아졌습니다.

기술적 도전

RxSwift

연속된 escaping closure를 피하고, 선언형 프로그래밍에서 제공하는 높은 가독성과 rx 오퍼레이터의 효율적인 비동기처리를 위해 RxSwift를 사용하게 되었습니다.
데이터가 발생하는 시점에서부터 뷰에 그려지기까지 하나의 큰 스트림으로 데이터를 바인딩해주었습니다.

재사용 가능한 View & ViewController 상속

기능에 따라 화면 구성이 조금씩 차이가 있어 공통적인 부분은 상위 View Controller로부터 상속 받고 다른 구성 요소에 대하여 재정의할 수 있도록 하였습니다.
여러 화면에서 공통적으로 사용되는 UI 등은 별도의 Custom Class로 정의하여 View의 재사용성을 높이고자 하였습니다.

Posts

BFS 알고리즘으로 답글 삭제 버그를 해결하기
Data Structure
Project
Trouble Shooting
PLUB
BFS 알고리즘으로 답글 삭제 버그를 해결하기
Data Structure
Project
Trouble Shooting
PLUB