Kotlin
September 18, 2023

Ускоряем поиск по коду в Android Studio

Рассмотрим возможности Android Studio, позволяющие быстрее ориентироваться в коде: находить нужные фрагменты и выявлять связи между ними.

Если вы опытный пользователь, то вам известно большинство нижеперечисленных лайфхаков. Но я узнавал о многих возможностях случайно, через многие месяцы работы в Android Studio, поэтому хочу рассказать всё, везде и сразу.

О чём

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

Эти методы экономят:

  • десятки секунд по сравнению с поиском вручную;
  • нервы, которые тратятся на «Да куда этот кусок кода делся-то? Я же его где-то тут видел...»

Хлебные крошки для блоков кода

Как воспользоваться: кликнуть ПКМ на любой номер строки -> Breadcrumbs -> Top/Bottom.

После активации Breadcrumbs появляется динамическое отображение «хлебных крошек» блока кода в фокусе.

Например, сразу можно увидеть, что вы находитесь в Activity, в которой имплементирован интерфейс с функцией, в которой вызван forEach.

Удобно использовать, если в одном файле несколько классов: сразу видно, в каком классе расположен блок кода.

Открыть текущий файл в древе

Первый вариант: чтобы Android Studio развернула древо до открытого в редакторе файла, нужно нажать кнопку Select Opened File.

Второй вариант: Ctrl (Windows) / Command (macOS) + кликнуть ЛКМ на название пакета. Студия развернёт выбранную папку.

Умный поиск

Как воспользоваться: дважды нажать кнопку Shift.

В появившемся окне можно написать:

  • название файла/класса/функции/переменной,
  • id View/ресурса,
  • название функции Android Studio,
  • название функции VCS (например, Compared with Branch).

Не умный поиск

Как воспользоваться: Edit -> Find -> Find in Files.

Иногда умный поиск почему-то не работает.

Но если вы точно знаете подстроку, которую нужно найти, то можно вбить её в «не умный поиск» — и получить список файлов или строк, в которых она используется.

Find Usages

Как воспользоваться: кликнуть ПКМ на строку или название файла -> Find Usages.

Функция Find Usages открывает список файлов, в которых используется выбранный элемент. Результаты поиска сортируются по типу использования (в качестве возвращаемого параметра, по местам создания экземпляра).

Функция работает для:

  • классов,
  • функций,
  • переменных,
  • id View.

Поиск по файлу

Как воспользоваться: Ctrl (Windows) / Command (macOS) + F или Edit -> Find -> Find.

Поиск в папках

В панели древе проекта также работает поиск. Достаточно переместить фокус в окно древа (кликнуть на любую папку) и начать набирать название на клавиатуре.

Для перемещения между результатами поиска можно использовать стрелочки вверх и вниз.

Поиск View через LayoutManager

Бывает, прилетает задача на доработку View, но неизвестно, как эта View называется в коде.

В этом случае можно открыть LayoutManager, найти визуально нужную View и подсмотреть название класса и id.

Ещё можно нажать Go To Declaration, чтобы сразу открылся файлик с View.

Поиск человека

Один из самых быстрых способов разобраться в коде — спросить автора.

Как воспользоваться: чтобы увидеть, кто написал строку, нужно включить Git -> Annotate with Git Blame.

Ctrl (Command)

Самый мощный инструмент — Ctrl (Command) + ЛКМ. Работает с переменными, функциями, классами, implements, override.

С помощью этой комбинации можно узнать, где используется код, и перейти к родителю/наследнику.

Но я долгое время не замечал, что в списке есть фильтры. Например, в результатах поиска можно оставить только запись переменных, убрав чтение. Ещё можно убрать весь сгенерированный код.

Implementation <> Interface

С помощью иконок Is implemented by можно увидеть список мест, где реализован интерфейс / абстрактная функция.

С помощью иконки Implements можно от реализации перейти к интерфейсу / абстрактной функции.

Также это работает с родительскими и дочерними классами.

Dependency Injection (DI)

Android Studio умеет отображать список классов, которые передают объекты в конструктор.

Например, можно увидеть, кто кладет Context в конструктор.

Эпилог

Жаль, что в Android Studio нет онбординга, который бы рассказывал об этих прекрасных возможностях. Возможно, о чём-то я не знаю до сих пор.

Что ещё вы используете для ускорения ориентации в коде?

Источник