Навигация по коду в Visual Studio

124

Компания Microsoft считает, что Visual Studio - это инструмент повышения производительности для разработчиков, а не только место, где можно редактировать код. Поэтому Visual Studio содержит в себе огромный функционал для оказания помощи разработчикам. Visual Studio 2013 призвана помочь разработчикам писать более эффективный и открытый код. Эта статья описывает некоторые из этих функций.

Описание кода

Когда вы исследуете код, зачастую необходимо быстро ознакомиться с реализацией вызываемого метода. Если вы щелкните правой кнопкой мыши по имени вызываемого метода и выберите в контекстном меню команду Go to Definition, Visual Studio откроет файл с реализацией данного метода. Однако, файл, который вы редактировали, окажется уже не в фокусе. Это конечно не непреодолимая проблема, но это неудобно.

Команда Peek Definition позволяет разработчикам просматривать определение метода, не выходя из контекста текущей области редактирования. Чтобы убедиться в этом, щелкните правой кнопкой мыши по имени метода и выберите в контекстном меню команду Peek Definition:

Команда Peek Definition в Visual Studio

Помимо просмотра кода реализации, команда Peek Definition позволяет редактировать его. Наведя курсор мыши на метод в окне кода реализации, вы можете щелкнуть правой кнопкой мыши и выбрать Peek Definition, чтобы углубиться в реализации перегруженных версий этого метода или определения других методов. Когда вы углубляетесь более чем на один уровень, появляется коллекция белых и синих кружочков, позволяющих перемещаться вперед и назад по иерархии вызовов:

Перемещение по нескольким реализациям метода с помощью Peek Definition в Visual Studio

Если вы хотите переместить окно Pick Window (с определением метода), можете использовать значок в закладке с именем файла, справа от названия файла.

Расширенные возможности полосы прокрутки

Расширенная полоса прокрутки - это один из наиболее популярных визуальных компонентов Visual Studio Productivity Power Tools, показывающий информацию о файле, который в данный момент редактируется. С помощью полосы прокрутки можно легко увидеть в каком месте кода находятся ошибки и предупреждения, точки останова, закладки и результаты поиска. На рисунке ниже показаны некоторые цветные маркеры полосы прокрутки:

Цветные маркеры полосы прокрутки Visual Studio

Как вы понимаете, такая подсветка значительно облегчает навигацию по файлу исходного кода, особенно если он содержит огромное количество строк. Включить или отключить определенную подсветку на полосе прокрутки можно с помощью узла Text Editor --> All Languages --> Scroll Bars в диалоговом окне Tools --> Options, как показано на рисунке ниже. В этом узле указываются настройки для всех языков, однако, вы можете изменить эти настройки для определенного языка (например, Text Editor --> C# --> Scroll Bars).

Настройки подсветки полосы прокрутки в Visual Studio

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

Полоса прокрутки в режиме Map

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

При наведении курсора на полосу прокрутки в режиме Map, слева от курсора отображается всплывающая подсказка с информацией о коде, который располагается в данной части документа:

Подсказка для полосы прокрутки в режиме Map

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

Navigate To

Команда Navigate То - мощный инструмент поиска в системе Visual Studio, появившийся в версии 2010 и обеспечивающий альтернативу стандартным функциям поиска символов. Как и команда Find Symbol, команда Navigate То ограничена лишь поиском символов; для того чтобы оценить ее полезность, следует рассмотреть большое количество отличий между нею и командой Find Symbol.

В противоположность команде Find Symbol команда Navigate То выводит результаты по мере того, как пользователь вводит поисковый запрос. Чем больше текста запроса набрано, тем уже становится множество результатов. Дважды щелкнув на одном из результатов, пользователь может закрыть диалоговое окно и перейти к этому результату.

Одно из наиболее важных свойств команды Navigate То заключается в том, как именно она выполняет поиск. Допустим, пользователь ищет метод класса ProductSummary. В этом инструменте поиска пробелы, по существу, играют роль оператора AND, поэтому в ответ на запрос "prod sum" (т.е. на поиск имен prod и sum в одном и том же модуле) команда возвращает класс ProductSummary точно так же, как в ответ на запрос sum prod.

В предыдущих версиях Visual Studio команда Navigate То открывала одноименное модальное окно для поиска. Такой подход является неудобным и отрывает программиста от рабочего процесса написания кода. В Visual Studio 2013 эта команда получила гибкий графический интерфейс. Для запуска поиска Navigate То можно использовать горячие клавиши Ctrl+, или команду меню Edit --> Navigate To, при этом откроется маленькое плавающее окно справа вверху:

Окно Navigate To

Когда вы начинаете вводить символы в строке панели Navigate То, Visual Studio использует семантический поиск для отображения списка совпадений. Другими словами, вместо простого текстового поиска, Visual Studio использует свое понимание классов и методов в коде проекта в качестве релевантного поиска. Клавиша Esc закрывает окно навигации и позволяет вернуться в исходное положение.

Другое уникальное свойство команды Navigate То заключается в том, что она выполняет поиск, используя "верблюжий стиль". Для того чтобы найти класс ProductSummary, можно набрать в запросе PS (прописные буквы из имени), чтобы получить искомый метод в качестве результата - очень мощное свойство, доступное только в этом инструменте поиска.

Пройди тесты
Лучший чат для C# программистов