Connect with us

Интегрированные среды разработки

Избегаем ловушек автозавершения в Android Studio

Автозавершение минимизирует количество ошибок и помогает оптимизировать процесс разработки, предсказывая и завершая код по мере ввода, что экономит время и снижает когнитивную нагрузку во время разработки.

Опубликовано

/

     
     

Когда вы сосредоточены на разработке, функция автозавершения в вашей IDE имеет решающее значение. Она значительно повышает производительность, сокращая необходимость набирать полные выражения, позволяя вам писать код быстрее и эффективнее. Автозавершение минимизирует количество ошибок и помогает оптимизировать процесс разработки, предсказывая и завершая код по мере ввода, что экономит время и снижает когнитивную нагрузку во время разработки.

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

В этой статье вы узнаете, как выборочно отключить предложения по автозавершению в Android Studio (IntelliJ IDE), что является главной темой Dove Letter на этой неделе. Dove Letter — это репозиторий по подписке, где вы можете учиться, обсуждать и делиться новыми знаниями об Android и Kotlin.

Ловушка автозавершения в нашей жизни

Если вы используете Jetpack Compose, то, возможно, сталкивались с ситуацией, когда все вроде бы хорошо, но что-то кажется не так.

Избегаем ловушек автозавершения в Android Studio

Например, вы могли импортировать объект Modifier по инструкции или по привычке, но вдруг обнаружили, что он не работает. Если вы поймете и устраните проблему в течение нескольких минут, это будет удачным исходом. Однако если вы потратите более 10 минут на устранение неполадок, это станет разочаровывающим сценарием.

Так в чем же проблема? Скорее всего, вы импортировали не тот пакет из-за предложения автозаполнения, как показано на изображении ниже, и в итоге застряли. Это распространенная ловушка в разработке, когда автозаполнение может ошибочно предложить похожий, но неправильный пакет, что приводит к путанице и потере времени.

Избегаем ловушек автозавершения в Android Studio

Еще одна распространенная ситуация, с которой вы наверняка сталкивались, особенно если работали с Kotlin Flow, — это когда IDE выдает вам несколько предложений пакетов, как показано на рисунке ниже. В чем проблема? Нужный вам класс Flow часто находится в последнем варианте, заставляя вас прокручивать неактуальные варианты. Это может замедлить ваш рабочий процесс и привести к ошибкам, если вы выберете неправильный пакет.

Избегаем ловушек автозавершения в Android Studio

Исключение класса или пакета из дополнения

Существует простой способ запретить IDE предлагать в автодополнении пакеты, не имеющие отношения к делу. Это можно сделать прямо в IDE, выполнив всего несколько шагов. Если вы хотите перестать видеть предложения от определенного пакета, следуйте следующему простому методу: когда в редакторе появится предложение автозаполнения, нажмите Opt + Enter (или Alt + Enter в Windows). После этого IntelliJ IDE спросит, хотите ли вы исключить предложения из этого пакета, как показано на рисунке ниже.

Избегаем ловушек автозавершения в Android Studio

Если вы выберете опцию «Исключить java.lang.reflect.Modifier из завершения», вы увидите всплывающее меню, подтверждающее исключение, как показано на рисунке ниже. Это не позволит IDE предлагать этот пакет в будущих подсказках автозаполнения, что поможет вам избежать неактуальных предложений и упростить процесс программирования.

Избегаем ловушек автозавершения в Android Studio

Вы также можете определить область действия исключения следующим образом:

  • IDE Scope: Этот параметр применяет исключение ко всей IDE. Независимо от того, над каким проектом вы работаете, IDE больше не будет предлагать исключенный пакет. Будьте осторожны с этой опцией, так как она может привести к проблемам в будущих проектах, где потребуются другие библиотеки. Если исключить нужный пакет, это может привести к новой катастрофе.
  • Project Scope: Как правило, это лучший вариант для исключения определенных пакетов. Преимущество использования области действия проекта заключается в том, что настройки зависят от конкретного проекта и могут быть сохранены в резервной копии. Это гарантирует, что даже если вы обновите IDE до новой версии (например, с Android Studio Koala до Ladybug), ваши настройки исключения останутся нетронутыми для этого проекта, в отличие от IDE scope, которые могут быть потеряны при иммиграции.

Настройка codeInsightSettings.xml

Если вы выбрали опцию проекта для исключения определенных пакетов, вы можете заметить, что в папке .idea создается файл с именем codeInsightSettings.xml. Если его нет, вы можете создать его. Этот файл содержит исключенные пакеты для вашего проекта.

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

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="JavaProjectCodeInsightSettings">
    <excluded-names>
      <name>java.lang.reflect.Modifier</name>
    </excluded-names>
  </component>
</project>

Если вы используете Jetpack Compose, Kotlin Flow, Dagger или Hilt, вы можете упростить процесс разработки, скопировав файл codeInsightSettings.xml, представленный ниже, и вставив его в каталог ./idea/codeInsightSettings.xml вашего проекта. Это предотвратит появление ненужных или неактуальных предложений во время автозавершения, что поможет вам сосредоточиться и не отвлекаться.

<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="JavaProjectCodeInsightSettings">
    <excluded-names>
      <name>android.graphics.Canvas</name>
      <name>android.graphics.Color</name>
      <name>android.graphics.Paint</name>
      <name>android.graphics.drawable.Icon</name>
      <name>android.inputmethodservice.Keyboard.Row</name>
      <name>android.text.Layout.Alignment</name>
      <name>android.view.Surface</name>
      <name>android.widget.Button</name>
      <name>android.widget.GridLayout.Alignment</name>
      <name>androidx.core.content.pm.ShortcutInfoCompat.Surface</name>
      <name>java.lang.reflect.Modifier</name>
      <name>java.nio.file.WatchEvent.Modifier</name>
      <name>java.time.format.TextStyle</name>
      <name>javax.annotation.concurrent.Immutable</name>
      <name>org.threeten.bp.format.TextStyle</name>
      <name>org.w3c.dom.Text</name>
      <name>java.util.concurrent.Flow</name>
      <name>org.intellij.lang.annotations.Flow</name>
      <name>jakarta.inject.Inject</name>
    </excluded-names>
  </component>
</project>

Заключение

Вы узнали, как предотвратить появление ненужных или неактуальных предложений автозаполнения в Android Studio (IDE IntelliJ), что может повысить эффективность разработки. Хотя ваш проект может прекрасно функционировать и без этих оптимизаций IDE, небольшие улучшения в рабочем процессе могут накапливаться со временем, что в конечном итоге приведет к значительному повышению производительности. Выработка привычек, позволяющих оптимизировать среду разработки, в конечном итоге может оказать значительное влияние на общую производительность.

Как всегда, счастливого программирования!

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: