Обычно MutableLiveData используется в ViewModel, а затем ViewModel предоставляет неизменные объекты LiveData только наблюдателям.https://developer.android.com/topic/libraries/architecture/livedata#update_livedata_objects
Лучше ли выставлять объект LiveData в качестве параметра объекта ViewModel:
val data: LiveData<String> get() = _data
или, скорее, возвращать его с вызовом функции-члена:
fun getData(): LiveData<String> { return _data }
Итак, в первом случае я мог бы написать
println(viewModel.data)
, а в последнем
println(viewModel.getData())
Внутренне оба в основном одинаковы.Но, как говорит @tyczj, первая форма более идиоматична.Итак, я бы предпочел первый.