Site icon AppTractor

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

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

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

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

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

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

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

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

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

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

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

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

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

Настройка 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, небольшие улучшения в рабочем процессе могут накапливаться со временем, что в конечном итоге приведет к значительному повышению производительности. Выработка привычек, позволяющих оптимизировать среду разработки, в конечном итоге может оказать значительное влияние на общую производительность.

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

Источник

Exit mobile version