Обновление объекта как целого по сравнению с обновлением отдельных столбцов в отделении - PullRequest
1 голос
/ 24 октября 2019

Я не могу понять, почему вы пишете метод для обновления определенного столбца сущности, вместо того, чтобы использовать аннотацию комнаты @update для обновления данного объекта сущности.

Следующий пример взят из одного из Примеры приложений Google :

@Dao
interface TasksDao {
    @Update
    suspend fun updateTask(task: Task): Int

    @Query("UPDATE tasks SET completed = :completed WHERE entryid = :taskId")
    suspend fun updateCompleted(taskId: String, completed: Boolean)
}

  1. Какой смысл предоставлять метод обновления сущности путем передачи ее id и нового значения completed column?

  2. Автор реализовал метод updateTask(), который принимает объект задачи в качестве параметра, так почему бы не передать измененную версию объекта, в котором для свойства completed будет установлено значениеожидаемое значение?

  3. Чем метод updateCompleted() лучше, чем updateTask()? Представляется нецелесообразным предоставлять специализированный метод для обновления каждого столбца объекта в отдельности. Это было бы смешно, так как количество столбцов растет.

  4. Когда мне следует использовать каждый из этих подходов?

1 Ответ

1 голос
/ 25 октября 2019

Может быть более эффективно использовать метод updateCompleted , поскольку вам просто нужно иметь идентификатор, чтобы вам не нужно было получать все остальные значения, а затем создавать объект просто для измененияконкретное значение.

Использование такого метода также имеет то преимущество, что потенциально делает код более понятным для чтения, поскольку цель функции достаточно ясна. Также снижается вероятность непреднамеренного изменения значений, которые не следует изменять.

Конечно, недостатком является то, что генерируется больше кода и, следовательно, APK будет больше. Так что, если размер APK имеет значение, вы можете сократить методы до минимума.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...