Member-only story
The technical choices I make to build great Android apps. Part 3 — Architecture

This 3-part mini-series talks a little bit about the technical choices I make when building an app, specifically an A-Z app, to go at least some of the way to describe some aspects of what makes a (technically) great app.
Architecture
It doesn’t matter whether you use MVP, MVVM, MVI or whatever the next craze is as long as you use it consistently in your project as there’s nothing worse than a code base with unclear intentions.
For this particular app, I use MVVM and LiveData with a sprinkling of coroutines and clean architecture, most importantly though I try to obey the SOLID principle which Elin Nilsson summarised brilliantly in her talk at droidcon London 2018.
Single responsibility principle — Don’t do a lot of things in one class
Open/closed principle — Design the API of the class so that it can be used and extended without being modified
Liskov substitution principle — Don’t let implementations of the same interface behave differently
Interface segregation principle — Don’t design big interfaces
Dependency inversion…