Skip to content

Favor-Gift-Reminder/Favor-iOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

페이버 - Favor

특별한 선물을 받은 오늘의 감정을 기록해보세요.
개발기간: 2022.12.29


⭐️ 프로젝트 소개

페이버는 주고받은 선물을 기록하는 앱이에요.
선물에 대한 정보와 그 날의 감정을 보관해보세요.
잊기 쉬운 지인들의 특별한 기념일을 등록하면 리마인더 알림을 보내드려요.


🔨 개발환경 및 라이브러리

Swift Badge
SnapKit Badge ReactorKit Badge RxSwift Badge


🍎 iOS

이창준 김응철
@nomatterjun @eung7

⚒ 아키텍쳐

⏺ MVVM-C & ReactorKit

MVVM

  • MVVM 패턴을 사용하여 ViewController에는 화면 구성 코드만 담고 ViewModel(Reactor)에게 비즈니스 로직과 데이터 가공 코드를 담았습니다.
  • 비즈니스 로직 테스트에서 UI 컴포넌트 의존성을 없앨 수 있어 유닛 테스트에 용이했습니다.

RxFlow (Coordinator)

  • Navigation Controller로 대표되는 화면 전환 로직들을 코디네이터 패턴에 전임하여 뷰 전환 코드의 재사용성을 높였습니다.
  • 데이터 전달, 의존성 주입 등의 로직을 비즈니스 로직에서 분리하였습니다.
  • 코디네이터 패턴에서의 delegate 패턴 사용을 Rx화 하여 대체하기 위해 RxFlow를 도입하였습니다.

ReactorKit

  • ViewModel마다 신경써야 했던 의존성 주입 문제의 피곤을 덜 수 있도록 ReactorKit을 도입하였습니다.
  • Action ➡️ Mutate ➡️ State의 일방성 스트림을 통해 자연스러운 코딩 컨벤션 통일이 가능했습니다.

⚽ 테크 Goal

🔀 RxSwift + ReactorKit

  • Observable한 프로퍼티들에 따라 UI와 로직이 작동할 수 있도록 RxSwift를 도입합니다.
  • 또한 각자 달랐던 MVVM 패턴 적용 방식의 통일과 유닛 테스트의 용이성을 확보하기 위해 ReactorKit을 함께 도입해봅니다.

⚒️ XCTest 코드 작성

  • 모듈화하여 개발한 각 UI와 로직의 기능들이 정상적으로 작동하는지 테스트해보기 위해 테스트 코드를 작성하고 분석합니다.