Является ли идиоматичным всегда предпочтение свойствам над полями поддержки?

Недавно я преобразовал проект Android с Java в Kotlin с помощью плагина Kotlin от Android Studio. Пост-преобразование, много полей в моих классах были выделены, и над ними отобразилось сообщение

Это свойство имеет фоновое поле

Снимок экрана Android Studio, показывающий сообщение hover

Должен ли я сделать вывод о существовании этого сообщения / предупреждения о том, что всегда считается более идиоматичным (в Котлине) использовать свойства с явно определенными геттерами и / или сеттерами? Или IDE является немного более-ревностным с информационными сообщениями? Ответы, которые включают ссылки на официальные источники, предпочитаемые 🙂

Idiomatic – использовать свойства без свойств подложки. Свойства резервной копии – это случай исключения, а также пользовательские getters и seters. Вам нужно знать разницу между «Базовым полем» и «Базовым свойством»:

В документах Kotlin речь идет о резервных полях, которые вы иногда получаете от пользовательских getters / seters и существуют для любого заданного свойства. Существует явное имя для поддержки полей field , поэтому в установщике вы должны получить доступ к этому полю поддержки под этим именем:

 var counter = 0 // the initializer value is written directly to the backing field set(value) { if (value >= 0) field = value } 

С другой стороны, свойство резервного копирования – это то, что вы определяете для хранения значения в другом частном имуществе и которым вы полностью контролируете. По соглашению он будет private и будет иметь префикс с подчеркиванием _ . Это выглядит так:

 private var _table: Map<String, Int>? = null public val table: Map<String, Int> get() { if (_table == null) _table = HashMap() // Type parameters are inferred return _table ?: throw AssertionError("Set to null by another thread") } 

Не о чем беспокоиться, это известная проблема с IDE. Выделение – это просто для вашей информации, потому что в определенных случаях для полей поддержки требуется определенная осторожность.

Если это вас беспокоит, просто выключите осмотр. Или измените подсветку, чтобы она была не такой яркой.