What's wrong with mobile development? From a max-level newbie. ¶
I'm tempted to say: everything, but it's obviously not that bad. Still...
Kotlin is good, why don't you use it properly?
You're not writing Java, why would you replicate its limitations in a language that doesn't have them.
Dependency Injection frameworks
Convenient and nice when used properly. Absolute disaster when taken too far. Just because you don't have to think about inter-class dependencies doesn't mean that you shouldn't think about them!
RxJava should die in a fire and fast
Trying to hammer everything into a single metaphor doesn't work too well. Otherwise Haskell would be the most popular language out there. RxJava tries to express all computation as operations on streams, ignoring the fact that not all computation is suited for such representation.
Writing correct concurrent code that can run some of its parts in parallel
is not easy. Using RxJava for it makes it harder. Kotlin coroutines provide
a much better way of dealing with it - scopes handle cancellation without
getting in the way, await
allows for easy offloading one-off
tasks that need to return a result, Flow
s handle streams of
values where it makes sense, channels and actors allow for multiple modes of
communication between threads and tasks. The M:N concurrency model -
admittedly, the same RxJava uses - saves resources by dispatching concurrent
tasks that don't have to be run in parallel on a single thread.
While RxJava provides literally hundreds of methods on a handful of classes, parts of Kotlin coroutines tend to have very small base API, augmented with extension methods in some contexts.
And so on... Just don't use Rx if you can avoid it, that's all.
Comments