Как использовать живой шаблон для повышения производительности труда разработчиков
Живой шаблон - это функция JetBrains IDE, которая позволяет расширять ключевые слова в фрагменты кода с редактируемыми полями. Когда вы набираете текст в Android Studio, иногда вам будет предлагаться следующий вариант:
Живой шаблон очень полезен для повседневных задач программирования, в которых он:
- Повышает продуктивность разработчика.
- Обеспечивает автозаполнение для часто используемых кодов.
- Предоставляет настраиваемые и редактируемые поля в зависимости от контекста вашего кода.
- Снижает когнитивную нагрузку, потому что вам не нужно запоминать стандартные коды.
В этой статье я попытаюсь объяснить, как создавать и применять пользовательские живые шаблоны, а также 2 других шаблона, которые могут быть полезны для повышения вашей производительности: Завершение постфикса и Шаблоны файлов.
Эти шаблоны также доступны для других IDE JetBrains.
Живой шаблон
Есть несколько живых шаблонов, которые предоставляются Android Studio из коробки, но в основном они предназначены только для кодов Java. Например, если мы введем logd
внутри функции в коде Java и выберем предложенное предложение, он завершит ваш код в Log.d(TAG, “functionName: “);
.
Вы также можете использовать ярлык «Вставить живой шаблон» (по умолчанию ⌘J в MacOS и Ctrl + J в Windows / Linux) для завершения любого действительное сокращение Live Template, если вы его не помните. Например, на MacOs введите log
и нажмите ⌘J, чтобы увидеть, что произойдет.
Чтобы просмотреть существующие или добавить новые действующие шаблоны, перейдите к
Settings/Preferences
, затем кEditor | Live Templates
.
Создание собственного живого шаблона
Чтобы создать новый активный шаблон, нажмите Добавить (+) в правом верхнем углу окна активного шаблона, затем выберите Живой шаблон. В окне шаблона присвойте ему аббревиатура. Аббревиатура - это ключевое слово, которое вы будете использовать для вызова действующего шаблона и расширения его до текста шаблона.
Вы можете использовать группу шаблонов для организации пользовательских шаблонов в логические группы.
Несколько вещей, которые нам нужно знать перед созданием наших живых шаблонов:
Контекст
Когда вы создаете новый действующий шаблон, вам будет предложено предупреждающее сообщение, в котором говорится: «Применимых контекстов пока нет.», и будет вариант, в котором вы можете определить контекст. Этот контекст определит тип файлов, в которых будут доступны живые шаблоны.
Поскольку мы собираемся писать живые шаблоны для Android, мы обычно сосредоточимся на Kotlin и контексте XML.
Советы. Вы можете использовать одно и то же сокращение для разных действующих шаблонов, относящихся к разным контекстам. Например, вы можете определить сокращение
logd
в контексте Kotlin, и оно будет работать только при вводе текста в файле Kotlin.
Переменные
Переменные - это редактируемые поля, которые можно изменять во время использования. Эти переменные могут быть пользовательскими вводами или выражениями, которые оцениваются в среде IDE.
Чтобы добавить переменные в действующие шаблоны, введите $VARIABLE_NAME$
в поле текст шаблона, а затем нажмите Изменить переменные. Вы должны иметь возможность редактировать свои переменные.
Вот краткое объяснение каждого поля:
- Имя: имя переменной.
- Выражения: позволяет заменить переменную предопределенными функциями.
- Значение по умолчанию: значение, которое будет использоваться, если выражение не удалось.
- Пропустить, если определено: пропускает запрос пользователя на ввод, если выражение успешно вычислено.
Вы можете использовать две предопределенные переменные: $END$
и $SELECTION$
.
$END$
- позиция курсора после раскрытия шаблона.$SELECTION$
будет заменен кодом, который в данный момент выбирается при раскрытии шаблона. Это полезно, когда вы используете «Окружение с живым шаблоном».
Примеры пользовательских шаблонов
Вот несколько живых шаблонов, которые я считаю действительно полезными и регулярно использую:
Injectable lateinit var
Abbreviation: inject Context: Kotlin: class Template text: @javax.inject.Inject lateinit var $VARIABLE_NAME$
Советы. Используйте полное имя и убедитесь, что параметр «Сокращать имена FQ» включен, чтобы Android Studio могла автоматически добавлять необходимые операторы импорта.
Свойство привязки Data Binding
Abbreviation: bindf Context: Kotlin: class Template text: private lateinit var binding: $BINDING_CLASS$ override fun onCreateView(inflater: android.view.LayoutInflater, container: android.view.ViewGroup?, savedInstanceState: android.os.Bundle?): android.view.View? { binding = $BINDING_CLASS$.inflate(inflater, container, false) return binding.root } Variables: BINDING_CLASS Expression: classNameComplete()
Если вы хотите использовать его в Activity
, вам нужно будет создать отдельный действующий шаблон.
Методы и параметры лесозаготовок с помощью Timber
Abbreviation: timberm Context: Kotlin: statement Template text: timber.log.Timber.d($CONTENT$) Variables: CONTENT Expression: groovyScript("def params = _2.collect {it + ' = [\$' + it + ']'}.join(', ');return '\"' + _1 + '() called' + (params.empty ? '' : ' with: ' + params) + '\"'", kotlinFunctionName(), functionParameters())
Обязательно нажмите Enter после того, как закончите вводить выражение в поле, иначе оно не будет сохранено.
Android XML TextView с предопределенным стилем
Abbreviation: textview Context: XML: XML text Template text: <TextView android:id="@+id/$ID$" style="@style/Widget.WantedlyUI.TextView.$STYLE$" android:layout_width="$VIEW_WIDTH$" android:layout_height="$VIEW_HEIGHT$" android:textAppearance="@style/TextAppearance.WantedlyUI.$STYLE$.$APPEARANCE$"$END$ tools:text="@tools:sample/lorem" /> Variables: ID Default value: "textView" VIEW_WIDTH Expression: enum("wrap_content","match_parent","0dp") VIEW_HEIGHT Expression: enum("wrap_content","match_parent","0dp") STYLE Expression: enum("Body1","Body2","Caption",...,"Title") APPEARANCE Expression: enum("Regular","Medium","SemiBold","Bold")
В Wantedly у нас есть система дизайна, которую мы можем использовать для стилизации нашего TextView
в соответствии с некоторыми предопределенными стилями. Интеграция этого style
в наш действующий шаблон упрощает для нас выбор правильного внешнего вида для наших элементов пользовательского интерфейса.
Ваш курсор будет следовать порядку параметров, определенному в Переменных, то есть в этом примере живого шаблона курсор переместится с
ID
,VIEW_WIDTH
,VIEW_HEIGHT
, затемSTYLE
, даже еслиSTYLE
был объявлен перед какVIEW_WIDTH
, так иVIEW_HEIGHT
в тексте шаблона. Это упрощает логический порядок переменных.
Завершение постфикса
Автозавершение Postfix очень похоже на живые шаблоны, но вызывается после выражения в вашем коде. Пример завершения постфикса - .when
.
Чтобы увидеть существующие дополнения постфиксов, перейдите на
Settings/Preferences
, затем наEditor | General | Postfix Completion
К сожалению, хотя мы можем редактировать некоторые ключевые слова и поведение автозавершения постфиксов, в настоящий момент мы не можем добавить пользовательское завершение постфиксов для Kotlin. 😔
Шаблоны файлов
Еще одна функция, очень похожая на живой шаблон, - это шаблон файла. Шаблон файла доступен при создании нового файла с помощью опции File | New
.
Чтобы просмотреть существующий или добавить новый шаблон файла, перейдите к
Settings/Preference
, затем перейдите кEditor | File and Code Templates
и выберите вкладкуFiles
.
Чтобы создать новый шаблон файла, нажмите кнопку + (Создать шаблон) в верхней части окна шаблонов файлов.
Если вы хотите использовать динамический шаблон в своем шаблоне файла, убедитесь, что установлен флажок «Включить динамические шаблоны» под текстом шаблона, и добавьте переменную динамического шаблона в формате
#[[$Var$]]#
.
Пример шаблона файла
Для нашего Android-приложения Visit мы используем класс UseCase
, который объединяет бизнес-логику в единое место. Этот шаблон файла позволяет нам легко создать новый класс UseCase
, который также является инъекционным.
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME} #end #parse("File Header.java") class ${NAME} @javax.inject.Inject constructor() { operator fun invoke(): #[[$Return$]]# { #[[$END$]]# } }
Файл Header.java - это шаблон заголовка файла, который можно найти на вкладке Включает.
Совместное использование ваших файловых шаблонов
Чтобы поделиться своими живыми шаблонами с вашей командой. Вы можете проверить свои файлы шаблонов, которые находятся в папке .idea / fileTemplates, в git. Затем установите для схемы файлов и шаблонов кода значение Проект, чтобы Android Studio использовала ваши шаблоны файлов.
Live Template - отличная функция, которая может легко повысить вашу продуктивность как разработчика. У меня был большой опыт их создания и использования, и я надеюсь, что обмен моим живым шаблоном может вдохновить вас на создание собственного живого шаблона. Дайте мне знать, если есть какой-нибудь интересный живой шаблон, о котором я должен знать!