Ответ
Нет, в data class лучше избегать var и использовать val для свойств.
Причины:
- Иммутабельность –
valделает объект неизменяемым, что безопаснее в многопоточной среде. - Корректность
equals()/hashCode()– изменениеvarпосле добавления в коллекцию может нарушить контракты. - Четкость модели данных –
data classобычно представляет состояние, а не поведение.
Пример:
data class User(val id: Long, val name: String) // ✅ Лучше
data class MutableUser(var id: Long, var name: String) // ❌ Риск побочных эффектов
Если изменение полей необходимо, лучше создать копию через copy().