Эй! Разработчик Advocate для Android на Google здесь!
Я хотел бы добавить немного фона здесь. Расширения Kotlin с синтетическими представлениями никогда не были намеренно «рекомендованы», хотя это не следует воспринимать как рекомендацию не использовать их. Если они работают на вас, пожалуйста, продолжайте использовать их в своем приложении!
Мы отошли от них (например, мы не учим их в курсе Udacity), потому что они предоставляют глобальное пространство имен идентификаторов, которое не связано с макетом, которое фактически раздуто без проверок на недопустимые поиски, только для Kotlin и не выставляйте обнуляемость, когда представления присутствуют только в некоторой конфигурации. Все вместе эти проблемы приводят к увеличению количества сбоев API для приложений Android.
С другой стороны, они предлагают облегченный API, который может помочь упростить поиск в представлении. В этом пространстве также стоит взглянуть на привязку данных, которая также выполняет автоматический просмотр представлений, а также интегрируется с LiveData для автоматического обновления ваших представлений при изменении данных.
Сегодня в этом пространстве работает несколько опций:
- Привязка данных - это рекомендация для просмотра представления, а также для привязки, но она добавляет некоторые накладные расходы по сравнению с Android Kotlin Extensions. Стоит посмотреть, подходит ли это для вашего приложения. Привязка данных также позволяет вам наблюдать LiveData, чтобы автоматически связывать представления при изменении данных. По сравнению с Kotlin Extensions он добавляет проверку времени компиляции поиска и безопасности типов.
- Android Kotlin Extensions официально не рекомендуется (что не совпадает с рекомендацией против). Это связано с вышеупомянутыми проблемами, поэтому для нашего кода мы их не используем.
- Butter Knife - еще одно чрезвычайно популярное решение, которое работает как для Kotlin, так и для языка программирования Java.
Прочитав комментарии здесь, есть много разработчиков, которым очень повезло с Kotlin Extensions. Это здорово - и о чем мы будем помнить, когда будем искать пути дальнейшего улучшения наших API. Если вы еще не ознакомились с привязкой данных, обязательно попробуйте.
Кроме того, наше внутреннее руководство по стилю кода не предназначено для непосредственного применения вне нашей кодовой базы. Например, мы используем mPrefixVariables, но нет причин, по которым каждое приложение должно следовать этому стилю.