Repository files navigation
비동기 프로그래밍
@Published, AnyPublisher, PassthroughSubject 등을 활용하였으며, Publisher 종류별로 언제 사용하는 것이 적합한지에 대해 고민해보았습니다.
API 연동
프로토콜을 활용하여 중복 코드를 최소화한 네트워크 레이어를 구성하였습니다.
클린 아키텍처를 기반으로 모듈화하였습니다.
협업 시 유용합니다.
접근 제어를 통해 다른 모듈에게 클래스, 메서드 등 불필요한 노출을 방지합니다.
Data Layer : DTO와 Repository를 가지며, 서버로 데이터를 전송하거나, 데이터를 받아오는 책임을 가지고 있습니다.
Domain Layer : 앱의 비즈니스 로직을 담당합니다. UseCase, Entity, Repository Interface를 가지며, 엡의 비즈니스 로직을 담당하게 됩니다.
Presentaion Layer : UI 로직에 대한 책임을 가집니다.
책임을 기반으로 View Model을 설계하였습니다. 의존 역전 규칙을 준수하기 위해 protocol을 통해 인터페이스를 설계하였습니다.
화면 전환을 담당합니다.
View Controller 간 의존성을 제거할 수 있습니다.
RootFeature: 각 Feature를 하나로 이어주는 모듈로, TabController가 구현되어 있음.
_Feature: View, ViewController, ViewModel, CoordinatorImpl
_FeatureInterface: 각 Feature의 Coordinator 인터페이스, ViewModel 인터페이스 등 선언
FeatureDependency: BaseViewController, Coordinator 프로토콜, Delegate 프로토콜
ABKit: A/B 디자인 시스템
Data: Network Layer, DTO, RepositoryImpl
Domain: Entity, Repository Interface, Use Case
Core: extension 등
ThirdPartyLibs: 외부 라이브러리
SnapKit: 코드 베이스 UI를 구현합니다.
About
세상의 모든 질문 AB로 답하다.
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.