Продолжается подписка на наши издания! Вы не забыли подписаться?

Разработка, сфокусированная на коде, в VS 2010

Автор: S. Somasegar
Опубликовано: 12.07.2010
Версия текста: 1.1

Подсветка ссылок
Быстрый поиск (Quick Search)
Иерархия вызовов
Разработка в режиме «сначала использование» (Consume-First)

В ноябрьском блоге я упоминал “Quick Search” – одну из новых возможностей работы с кодом в VS 2010. Мы несколько отстали в этой области, и хотим сфокусироваться на этом как на краеугольном камне Visual Studio 2010. Сегодня я хотел бы поделиться некоторыми деталями новых возможностей, связанных с написанием кода.

Подсветка ссылок

Подсветка ссылок (Highlight References) – это простой и легкий способ быстро понять рассматриваемый кусок кода и переходить по ссылкам. Эта возможность активируется автоматически после небольшой задержки – все ссылки на идентификатор под курсором подсвечиваются. Переход к следующей ссылке выполняется нажатием Ctrl + Shift + UpArrow (обратно – DownArrow). В приведенном ниже примере можно увидеть эту возможность в действии; можно также заметить, что она выводит, какие перегрузки связаны с текущим выбором вместо простого текстового соответствия.


Рисунок 1.

Быстрый поиск (Quick Search)

О такой возможности, как Quick Search, я уже упоминал. Она работает для всех идентификаторов и типов данных C++, C# и VB. Это очень легковесный путь выполнять инкрементальный поиск, быстро фильтровать результаты и использовать поиск по подстрокам. Посмотрим, как это можно использовать.

Если, допустим, я ищу обработчик события и не могу точно вспомнить его имя, но знаю, что использовал обычные соглашения по именованию, Quick Search придет на помощь. Первый шаг – найти все сигнатуры методов, которые содержат слово "Click", введя “Click” в Quick Search.


Рисунок 2.

К этому моменту я могу вспомнить, что там есть еще "Enter"; добавив букву “E”, я смогу быстро отфильтровать все, кроме "Click" и "E", пробел рассматривается при этом как групповой символ. Список результатов сокращается до двух вхождений, из которых несложно выбрать нужное.


Рисунок 3.

Quick Search поддерживает даже camel-нотацию. Например, если написать заглавными буквами "SPF", Quick Search отфильтрует результаты, оставив соответствующие camel-нотации или точные совпадения!


Рисунок 4.

Иерархия вызовов

Еще один сценарий, на котором стоит остановиться – просмотр зависимостей. Например, если я изменю метод, я могу просмотреть все места, где он вызывается. В VS 2010 мы улучшили работу с браузером вызовов в C++, а также ввели инструмент для работы с иерархиями вызовов в C# и VB. Эти возможности позволят легко перемещаться по вызовам (см. рисунок 5).

Средства работы с иерархией вызовов позволяют также увидеть все переопределения метода и все реализации интерфейсных методов. Например, если я хочу увидеть, кто реализует интерфейсный метод MakeSound(), я могу вызвать иерархию вызовов и увидеть, что есть две реализации, в Cat и в Dog (рисунок 6).

Разработка в режиме «сначала использование» (Consume-First)

Многие возможности Visual Studio, например, IntelliSense и Quick Info, лучше всего работают, когда API, используемый программистом, уже определен. Однако мы понимаем, что иногда приходится писать код для API, который еще не определен полностью. Например, в TDD (разработка через тестирование, test-driven development) используется паттерн «сперва тестирование». Поэтому в VS 2010 мы упростили разработку в режиме «сначала использование».


Рисунок 5.


Рисунок 6.

Я уже говорил о возможности «генерирования по использованию», генерирующей код-заглушку для типов, методов, свойств и конструкторов на основе использования символов в коде. На рисунке ниже вы можете увидеть эту возможность в действии.


Рисунок 7.

При генерировании конструктора будет создан следующий код:


Рисунок 8.

Однако мы также разрабатываем режим "consume-first" для IntelliSense, который позволяет легко переключать поведение автозавершения для IntelliSense. Сегодня в Visual Studio вы можете получить поведение, когда вопреки вашему желанию IDE автозавершает идентификатор, который еще не существует (например, возвращаемый тип generic-метода). Ниже показано, как при вводе "Puzzle" IntelliSense подставляет "PuzzleTest". Если нажать пробел или ввод, будет вставлено "PuzzleTest". (по всей видимости, автор говорит о VB, в котором список автозавершения открывается прямо во время ввода, а не с помощью комбинации клавиш, как в C# - прим.ред.)


Рисунок 9.

Вместо этого можно будет нажать Ctrl+Alt+Space, чтобы включить режим «сначала использование». Теперь, если ввести "Puzzle", "PuzzleTest" по-прежнему будет в списке, но не будет выбран; что вы ввели, то и вставится.


Рисунок 10.

Это примеры того, что мы делаем в Visual Studio 2010 для упрощения и эффективности вашей работы.

ПРИМЕЧАНИЕ

Все вышеописанное – это хорошо и даже замечательно. Неясно только, почему представитель софтверного гиганта забыл упомянуть, что все это цельнотянуто из JetBrains ReSharper. Можно было и упомянуть замечательную фирму JetBrains, создавшую замечательный продукт, открывший эти и многие другие возможности для VB- и C#-программистов. – прим.ред.


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

Copyright © 1994-2016 ООО "К-Пресс"