Это вопрос, на который, возможно, нет единого ответа, поскольку в зависимости от конкретного варианта использования могут быть сделаны разные выводы. Однако:
Sir Codesalot (отличная ручка), на мой взгляд, технически правильный. Позвольте мне уточнить.
В MVVM представление должно передавать события взаимодействия с пользовательским интерфейсом (команды) в ViewModel. Вот статья от Microsoft (кто изобрел mvvm): https://msdn.microsoft.com/en-us/library/ff798384.aspx Приведенные здесь примеры не относятся к Android, но концепции должны быть одинаковыми, особенно если вы посмотрите на первую диаграмму.
ViewModel должна творить чудеса, реагировать на эти события, соответствующим образом манипулируя данными, а затем уведомлять наблюдателей (обычно представление) об изменениях состояния. Затем представление реагирует на изменения состояния.
Таким образом, если вы просто передадите данные обратно из ViewModel (синхронно), то в вашем представлении могут отсутствовать побочные эффекты. В вашем конкретном примере их, вероятно, нет, но учтите, что метод, который вы вызываете, не только возвращает данные, но также изменяет некоторое внутреннее состояние (например, подсчитывает количество обращений к данным). Тогда ваш взгляд не будет знать о них.
Конечно, вы можете сделать так, чтобы вы могли вернуть все соответствующие данные для представления, но это начинает нарушать принцип единой ответственности.
Вот интересное сообщение в блоге, которое может дать лучший пример того, почему представление всегда должно получать состояние после ViewModel: https://medium.com/upday-devs/mvvm-rxjava-learnings-1819423f9592.
Что касается другого случая, статья в Википедии о MVVM https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel утверждает, что ViewModel может предоставлять общедоступные свойства.
Итак, в конце концов, скорее всего, будет чище, если вы не будете возвращать данные напрямую. Однако вы являетесь архитектором и знаете свое приложение лучше всех, и могут быть случаи, когда шаблоны могут быть нарушены. Ведь они являются ориентирами. Если вы знаете, почему вы его ломаете (и, возможно, документируете это), то все должно получиться.
15.05.2018