clean architecture on real productions? • YAGNI • Interactors act just as a proxy to a gateway • Do we really need abstraction? • Kotlin features instead of (some) abstractions • Redundant boilerplate • Most of the time, we’re dealing with platform specific concerns
Dagger Hype • Using Kodein and Koin with no more code get • RxJava Hype • RxJava vs Kotlin coroutines + kotlin operators vs LiveData • Memory consumption
are not clean enough • Location and GPS modules • The logic inside Notification, Download manager, Background Job and … • Communication between these things and our data or presentation layer ——> Side effect on testing
concerns • Making a multi-platform app • Mobile, Wear and TV • Based on TV Maze API • Clean + Kotlin + AAC + Test + CI/CD + Build system .…. • Available on Github ( SaeedMasoumi/MovieHub )
String, val summary: String, val schedule: Schedule, val tvNetwork: TVNetwork, val url: String //... ) data class TVNetwork( val id: Int //... ) data class Schedule( val time: Date //... )
between sources • Decision goes into data layer • Room and DAOs goes into local layer (AKA cache, persistence, storage, …) • Retrofit goes into remote • Any other logics (e.g. Location) goes into data layer or if you need more modularity make a separate module