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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

Денис Долгополов

Android Dev, блог об Android - https://t.me/dolgo_polo_dev

О чём

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

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

Источник: https://habr.com/ru/companies/ozontech/articles/759480/


Интересные статьи

Интересные статьи

Благодаря новому плагину PVS-Studio преимущества статического анализа теперь доступны и при работе с редактором Visual Studio Code. В этой статье мы разберём использование плагина от этапа установки д...
Перевод официального анонса с комментариями от Android Developer Surf Олега Жило. Как Android разработчики мы стремимся создавать опыт, который будет радовать людей ...
Все началось в 2001 году, когда интернет только начинал свое победное шествие, и появился неограниченный доступ к огромной библиотеке знаний. Мы жадно скачивали электронн...
Привет читателям!   В какой-то момент любое крупное приложение разрастается так, что сложно везде поддерживать однотипный дизайн и динамично реагировать на любые изменения и те...
Привет! Меня зовут Владимир Олохтонов, я старший разработчик в команде автоматической модерации Авито. Осенью 2019 мы запустили сервис поиска похожих изображений на основе библиотеки fa...