Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Kotlin backing property in Android ViewModel

Tags:

android

kotlin

Was just wondering, why is it better to use backing property for MutableLiveData, instead of just exposing getter function that returns the MutableLiveData property as live data. For example: Why this code

private val _registeredDevicesObservable: MediatorLiveData<List<Data>> = MediatorLiveData()
val registeredDevicesObservable: LiveData<List<Data>> = _registeredDevicesObservable

is better or more acceptable than this one

private val _registeredDevicesObservable: MediatorLiveData<List<Data>> = MediatorLiveData()
fun registeredDevicesObservable(): LiveData<List<Data>> = _registeredDevicesObservable

As also when this getter function is keeping the LiveData immutability and keeps me from having that little annoying underscore syntax when accessing the property inside the view model.

like image 998
FreeSec Avatar asked Oct 29 '25 01:10

FreeSec


1 Answers

It's just less idiomatic in the language to use a function that simply returns an already-available object. You're free to do it any way you like, but if others have to work with your code, it will be easier to understand and work with if you follow general conventions.

There isn't as strong a convention about whether the backing property should have a leading underscore in the name, so if you don't like it, don't use it.

One reason to stick with these conventions is there is a proposed upcoming language feature to allow you to do this without a backing property, and so if you're following the conventions, it will be very easy to update your code to eliminate the backing property.

like image 122
Tenfour04 Avatar answered Oct 30 '25 16:10

Tenfour04



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!