Отслеживание изменений
При отслеживании изменений визуально выделяется сохраненный и несохраненный
код.
На приведенной ниже диаграмме вы заметите, что левая граница для определенных
участков кода закрашена по-разному. Зона окантовки, подкрашенная желтым цветом,
соответствует новому коду, который еще не был сохранен, тогда как зеленая зона
окантовки выделяет сохраненный новый код. Зона окантовки, не выделенная ни
желтым, ни зеленым цветами, указывает на код, который уже существовал, когда
файл был открыт.
Диаграмма 1. Отслеживание изменений
Дизайнер классов
Дизайнер классов — это новая возможность, которая открывает вам «окно» в ваш
код, предоставляя поверхность визуальной разработки для классов и типов вашего
проекта. Как и в остальных визуальных дизайнерах Visual Studio 2005, сделанные
визуально изменения отражаются в коде, и наоборот.
Эта диаграмма изображает абстрактный класс Animal. Он предоставляет три
свойства и четыре метода:
Диаграмма 1. Дизайнер классов
На панели Class Details (Детали класса), представленной ниже, вы можете
добавлять или изменять методы, свойства, поля и события. Вы также можете
щелкнуть правой кнопкой класс и ввести различные элементы посредством пункта
меню Add (Добавить). На этой диаграмме представлен выбор пользователем пункта
меню для добавления новой константы в класс Dog:
Диаграмма 2. Добавление метода в класс, представленный
визуально
Из дизайнера классов вы также можете реорганизовать исходный код. Здесь вы
видите извлечение интерфейса из абстрактного класса Animal:
Диаграмма 3. Извлечение интерфейса из класса в дизайнере
классов
При выборе пункта меню Extract Interface (Извлечь интерфейс), появляется
диалог с таким же названием. В нем вы можете выбрать, какие открытые члены будут
образовывать извлеченный интерфейс.
Диаграмма 4. Выбор открытых членов, которые образуют
извлеченный интерфейс
Теперь интерфейс появляется в дизайнере классов в виде затушеванного зеленым
модуля. Следующая диаграмма показывает некоторые другие используемые символы.
Символ интерфейса располагается над классом Animal, а стрелка, указывающая на
класс Animal и выходящая из класса Dog, показывает, что второй унаследован от
первого.
Диаграмма 5. Дизайнер класса отображает абстрактный класс,
который реализует интерфейс, и конкретный класс, унаследованный от абстрактного
класса
Расширения
В новое меню IntelliSense входит большое число опций, призванных помочь
повысить вашу производительность.
Диаграмма 1. Меню IntelliSense
Одной из возможностей, на которую следует обратить особое внимание, являются
расширения, которые представляют собой фрагменты кода «заполнения стандартного
бланка». Расширения помогают сократить количество нажатий клавиш для
повторяющихся задач и упростить введение обычных конструкций, таких как
выражение foreach. Ввести расширения вы можете, нажав правой кнопкой строку кода
и выбрав пункты Refactor (Реорганизовать) | Insert Expansion (Вставить
расширение), или непосредственно вызывая настраиваемую клавишу быстрого выбора
команд (по умолчанию, CTRL+T,X). При этом появляется голубая панель, в которой
вы можете набрать первые несколько букв имени расширения, чтобы быстро найти его
в выпадающем меню.
Диаграмма 2. Введение расширения
При выборе расширения свойства вставляется следующий фрагмент кода. По щелчку
кнопки Tab вы можете переходить от одной выделенной желтым области к другой и
изменять стандартный код.
Диаграмма 3. Расширение свойства
Расширения — это полностью расширяемые XML-файлы, которые вы можете
настраивать или создавать. Расширения можно найти в папке C:\Program
Files\Microsoft Visual Studio 8\VC#\Expansions\1033\Expansions. XML-файл для
выбранного ранее расширения свойства показан здесь:
Диаграмма 4: XML-представление расширения свойства
Более подробная информация по расширениям представлена в статье Эндрю
Троилсена (Andrew Troelsen) Investigating Code Snippet
Technology
(http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/codesnippets.asp).
Окружения
Другая новая замечательная возможность — способность окружать существующие
строки кода расширением. Чтобы использовать эту возможность, выделите строку
кода и затем выберите пункт Surround With (Окружить) меню IntelliSense. Вы также
можете щелкнуть правой кнопкой и выбрать пункт меню Refactor | Surround With или
нажать CTRL + T,S. На следующей диаграмме показано, как поместить выделенное
выражение в блок Try конструкции Try/Catch:
Диаграмма 1. Окружение выделенного выражения расширением Try
Catch
По нажатию клавиш Tab или Enter выражение окружается расширением. Ваш курсор
позиционируется в выделенной голубым области, так что, если хотите, вы можете
быстро изменить тип исключения.
Диаграмма 2. Результат окружения выражения расширением Try
Catch
Испытательный стенд объекта
Object Test Bench (Испытательный стенд объекта) позволяет вам провести
простое тестирование на уровне объектов. С его помощью вы можете создавать
экземпляры классов вашего проекта, инициировать их методы и наблюдать
результаты. Если ваш класс предоставляет статические методы, вы можете вызывать
их без создания экземпляров класса, используя пункт меню Invoke Static Method
(Инициировать статический метод). На этой диаграмме вы видите создание
экземпляра класса Dog:
Диаграмма 1.Создание экземпляра класса Dog из Class
Designer.
При этом появляется диалог Create Instance (Создать экземпляр), в котором вы
можете назначить имя нового объекта:
Диаграмма 2. Диалог Create Instance
В окне Object Test Bench появляется новый объект. Теперь вы можете щелкнуть
его правой кнопкой и в меню Invoke Method (Инициировать метод) выбрать метод для
тестирования:
Диаграмма 3. Пункты меню Invoke Method
При вызове метода появляется диалоговое окно Method Call Results (Результаты
вызова метода). Здесь вы видите результаты вызова метода Dog.Speak
пользователем. Сообщение свидетельствует о том, что метод отработал правильно и
вернул соответствующее строковое значение.
Диаграмма 4. Диалог Method Call Result
Реорганизация исходного кода
Теперь Visual C# 2005 IDE включает устойчивую поддержку реорганизации
исходного кода. Реорганизация исходного кода позволяет разработчикам
автоматизировать многие обычные задачи при реструктуризации кода. Более
подробная информация по реструктуризации кода представлена по адресу http://www.refactoring.com/
(http://www.refactoring.com/).
На следующей диаграмме показан полный набор меню команд реорганизации
исходного кода и выбор пользователем команды Rename (Переименовать).
Диаграмма 1. Применение опции Rename меню Refactor
Когда инициирован пункт меню Rename, пользователь увидит диалоговое окно
Preview Changes (Предварительный просмотр изменений), как показано ниже. В этом
диалоге приведен список всех случаев использования этого имени, как в
комментариях, так и в коде. Контекстное меню диалога Preview Changes также
позволяет пользователям переходить непосредственно к строке исходного кода,
использующей переменную.
Диаграмма 2. Диалог Preview Changes, который появляется при
выборе опции Rename
Еще одна обычная задача реорганизации — превращения локальной переменной в
параметр, как показано на этой диаграмме.
Диаграмма 3. Применение меню Refactor для превращения
локальной переменной в параметр
Выбор этой опции превращает описание переменной, локально потерявшей
значимость, в параметр сигнатуры аргумента включающего метода, как показано в
следующей диаграмме. Голубым выделено пустое место, оставшееся после
автоматического удаления выражения локальной переменной. Сравните эту сигнатуру
аргумента с предыдущей диаграммой.
Диаграмма 4. Результат превращения потерявшей значимость
переменной в параметр
Реорганизация исходного кода также доступна через Smart Tag. Вы можете найти
Smart Tag интерфейса, щелкнув слово интерфейса. При этом под первой буквой
появится маркер, как видно на этой диаграмме.
Диаграмма 5. Визуализация маркера доступности Smart
Tag
Если зависнуть над словом интерфейса с визуализированным маркером, появится
значок Smart Tag. Щелкните направленную вниз стрелку, чтобы просмотреть пункты
меню Smart Tag. Здесь вы видите выбор опции для явного применения заглушек
интерфейса IAnimal:
Диаграмма 6. Применение заглушек интерфейса
В результате получаем методы интерфейса, часть которых мы видим на этой
диаграмме:
Диаграмма 7. Часть методов интерфейса.
Поле подробную информацию по реорганизации исходного кода ищите в статье
Эндрю Троилсена (Andrew Troelsen) Refactoring C# Code
Using Visual Studio 2005
(http://msdn.microsoft.com/vcsharp/default.aspx?pull=/library/en-us/dnvs05/html/vs05_refac.asp)
Другие усовершенствования IntelliSense
IntelliSense был усовершенствован для понимания шаблонных типов. На следующей
диаграмме базовое свойство Products экземпляра c2 класса Category оказывается в
меню объекта IntelliSense.
Диаграмма 1. Шаблонные типы в меню объекта
IntelliSense
В объекте IntelliSense также была доработана работа с исключениями. При
добавлении блока Try/Catch, IntelliSense фильтрует доступные опции, чтобы
показывать только список типов исключений.
Диаграмма 2. IntelliSense проводит фильтрацию и отображает
только исключения
Фильтрация опций также применяется к атрибутам. На следующей диаграмме при
добавлении атрибута происходит фильтрация доступный опций и выводится только
список типов атрибутов.
Диаграмма 3. IntelliSense проводит фильтрацию
атрибутов
Форматирование
Форматирование исходного кода — это всегда вопрос личных предпочтений, и
Visual Studio 2005 включает несколько опций, позволяющих полностью настраивать и
управлять тем, как форматируется ваш исходный код. Эти варианты форматирования
включают фигурные скобки, пробелы, отступы, создание оболочки и выравнивание. У
вас также есть выбор автоматически форматировать код или просто отдельные его
разделы в IDE. Приведенная ниже диаграмма показывает опции применения фигурных
скобок для форматирования новой строки, а также предварительный просмотр
выбранного варианта форматирования.
Диаграмма 1. Варианты форматирования и панель предварительного
просмотра
Шрифты и цвета
При просмотре исходного кода одним из самых простых способов различать типы и
ключевые слова — использовать в IDE разные цвета или шрифты. Visual Studio 2005
значительно расширяет число отображаемых элементов, внешний вид которых вы
можете изменять, включая различные точки останова (смотрите ниже в разделе
Расширения отладчика) и пользовательские типы.
Диаграмма 1. Различное окрашивание пользовательских типов и
ключевых слов
Профили
Тогда как разработчикам нравится возможность полностью настраивать шрифты,
окна и форматирование IDE, использовать ваши настройки другим членам команды или
переносить их на другой компьютер сложно. Visual Studio 2005 добавляет
возможность без труда импортировать и экспортировать ваши настройки IDE между
машинами или использовать их совместно с членами команды.
Диаграмма 1. Диалог Import/Export settings (Импорт/экспорт
настроек)
Меню Open Files
В верхнем левом углу окна Code Editor (Редактор кода) / Design View
(Представление разработки) находится новое меню Open Files (Открытые файлы). В
нем содержатся все файлы, открытые в данном решении. Используйте его, чтобы
легко переходить к этим открытым файлам, особенно когда открыто большое
количество файлов и они все не помещаются на экране.
Диаграмма 1. Использование меню Open Files для перемещения по
различным открытым файлам Решения
Поиск всех ссылок
Теперь вы можете щелкнуть правой кнопкой любой класс или член и найти все
строки кода, использующие его. Хотя вы могли делать это и раньше с помощью
глобального поиска, этот вариант упрощает и ускоряет задачу.
Диаграмма 1. Информация, появляющаяся в результате щелчка
класса Category и выбора пункта меню Find All References (Найти все ссылки),
выводится в окне Find Symbol Result (Результат поиска символов)
Секция using
В Visual Studio 2005 есть область для размещения директив «using». Например,
когда вы добавляете новую форму в проект Windows Application, соответствующие
директивы «using» автоматически вставляются и группируются в этой области, как
показано на этой диаграмме.
Диаграмма 1. Представление кода вновь добавленной Windows Form
с развернутой областью Using
IDE посредством Smart Tag также поддерживает автоматическое добавление
выражений «using». Например, представим ситуацию, когда вам хочется написать
Debug.WriteLine, но после набора слова «Debug» вы обнаруживаете, что не получили
поддержки IntelliSense. Если щелкнуть «Debug» или провести по нему курсором,
появляется значок Smart Tag. Вы можете щелкнуть направленную вниз стрелку, чтобы
выбрать или соответствующее выражение «using», или полностью определенное имя
класса, с которым хотите работать.
Диаграмма 2. Пункты меню Smart Tag, предоставляющие вам доступ
к членам класса
Когда вы выбираете директиву using вместо полностью определенного имени
класса, директива автоматически вставляется в секцию.
Диаграмма 3. При выборе директивы using, она автоматически
вставляется в секцию
Когда директива добавлена, имя класса выделяется жирной синей полосой,
показывая, что теперь вы имеете доступ к нему. При этом доступен весь
IntelliSense, так что дальше вы можете пользоваться доступом к методу
WriteLine.
Диаграмма 4. Debug выделяется жирным шрифтом, и теперь
доступен весь IntelliSense
Очистка решения
Сейчас Visual Studio 2005 позволяет вам вычищать ваше решение, устраняя любые
нежелательные промежуточные в выходные файлы. На следующей диаграмме показана
папка bin\Debug, когда в Solution Explorer выбран значок Show All Files
(Показать все файлы).
Диаграмма 1. Пример Решения, нуждающегося в очистке
Чтобы начать очистку, щелкните Решение правой кнопкой и выберите опцию Clean
Solution (Очистить решение).
Диаграмма 2. Выбор опции Clean Solution
Когда очистка завершена, если вы обновите Solution Explorer, то увидите, что
половина файлов папки bin\Debug была удалена.
Диаграмма 3. Результат очистки решения
Представление определения кода
Выбор опции View (Представление) | Code Definition View (Представление
определения кода) (или нажатие комбинации клавиш CTRL+W,D) позволяет вам увидеть
исходный код любого программного элемента (класса, члена и т.д.), по которому вы
щелкнули. Для типов, исходный код которых доступен в вашем решении, окном
описания кода будет исходный код, как видно на следующей диаграмме. Для типов,
исходный код которых недоступен, окно описания в качестве источника покажет
метаданные типа (смотрите следующий раздел по «Go To Definition»). На следующей
диаграмме показано, что происходит, если при открытом окне Code Definition вы
помещаете курсор на слово «Product» в любой строке кода.
Диаграмма 1. Просмотр исходного кода для класса Product в окне
Code Definition
«Go To Defintion» показывает исходный код
Пункт меню Go To Definition (Перейти к описанию) теперь переносит вас к
исходному коду откомпилированных типов, для которых в вашем проекте файл
исходного кода недоступен. Предыдущие версии Visual Studio просто перенесли бы
вас в Object Browser. Здесь вы видите момент щелчка правой кнопкой класса Form и
выбора опции Go To Definition:
Диаграмма 1. Выбор Go To Definition для типа, для которого нет
файлов с исходным кодом
Результатом является исходный код, сформированный из метаданных сборки.
Диаграмма 2. Исходный код — результат выбора опции Go To
Definition для компилированного типа
Опция Find по умолчанию ведет поиск скрытого
текста
Самой распространенной просьбой по поводу окна Find and Replace (Найти и
заменить) было изменить его стандартное поведение таким образом, чтобы свернутый
текст, как текст внутри области, принимал участие в поиске по умолчанию. В
Visual Studio 2003 это поведение по умолчанию выключено. В Visual Studio 2005
поиск скрытого текста по умолчанию включен.
Диаграмма 1. Поиск скрытого текста в диалоге поиска и
замены
Никакая часть настоящей статьи не может быть воспроизведена или
передана в какой бы то ни было форме и какими бы то ни было средствами, будь то
электронные или механические, если на то нет письменного разрешения владельцев
авторских прав.
Материал, изложенный в данной статье, многократно
проверен. Но, поскольку вероятность технических ошибок все равно существует,
сообщество не может гарантировать абсолютную точность и правильность приводимых
сведений. В связи с этим сообщество не несет ответственности за возможные
ошибки, связанные с использованием статьи.