Microsoft не перестает меня удивлять. Казалось бы, что нового можно предложить в среде программирования? Устранить ошибки (а заодно добавить новые) да внести некоторые количественные изменения - дополнительные компоненты и опции. Однако в новой версии Visual Studio "Whidbey", финальный релиз которой обещается в начале 2005 года, шаги вперед, пусть и не семимильные, но все-таки заметные, сделаны сразу по нескольким направлениям.
WHIDBEY
Небольшой остров северо-западнее Вашингтона, входящий в графство Айлэнд (Island county). Один из крупнейших офшоров в США. Назван в честь штурмана Джозефа Уидби (Joseph Whidbey).
IDE
Начнем с "великолепной семерки" - семерки изменений, без которых мы вроде бы жили и раньше, но которые действительно облегчают жизнь.
1) Расширители кода (expansion, см. рис.). Как показывает практика, до 75% кода программы - это такие простые конструкции, как условия, циклы, классы и тому подобная элементарщина. Дабы не набирать этот, почти очевидный, код вручную, IDE предоставит вам возможность одним нажатием вставить весь модуль. Естественно, вы можете сделать свои или настроить существующие расширители - благо они написаны на XML.

2) Смарт-теги. Кому-то может показаться, что это излишество, но смею заверить, что излишество весьма и весьма полезное. Например, при ошибочном наборе ключевых слов вам, как в "Ворде" при проверке орфографии, будет предложен список возможных значений (см. рис.).

3) Технология intelliSense подверглась доработке. Она позволяет автоматически завершить написание оператора, свойства или функции; то есть когда вы начинаете писать команду или параметр, в окне предлагаются возможные варианты, и вам остается только подтвердить один из них, нажав Enter. Появилась поддержка шаблонов и средства формирования списка из доступных значений при добавлении блоков try/catch (см. рис.).

4) Шаблоны кода (code snippets, см. рис.) По сути, это обычные куски кода, которые раньше хранились в разрозненных файлах или, того хуже, в голове. Теперь все это хозяйство помещается в единое хранилище, откуда извлекается парой кликов.

5) Возможность вычисления выражений непосредственно при редактировании, без компиляции, причем с проверкой синтаксиса и выводом рекомендаций (см. рис.)

6) Визуальный рефакторинг. Звучит страшновато, но задействуется легко и в работе очень удобен. При программировании даже простейшей задачи первоначальный код размером со страничку имеет свойство распухать до вселенских масштабов. Рыться в простыне исходников длиной в несколько метров, разумеется, не составляет никакого удовольствия. Решение очевидно - разбить задачу на более мелкие и их код вынести в отдельные процедуры, функции, методы или целые классы. Безусловно, все это можно сделать и ручками, но именно лень, как известно, двигатель прогресса. И теперь наша лень формализовалась в специальном меню, где парой кликов нужный фрагмент превращается в отдельный кусок (рис. 6). В принципе рефакторинг был доступен и раньше - в виде подключаемых модулей, но порой эти надстройки не работали вообще или работали некорректно.

Теперь рефакторинг стал неотъемлемой частью IDE, так что такие нудные операции, как переименование переменной, класса или объекта, выполняются автоматически. Причем в окошке Preview Changes вы увидите те строки кода, в которые будут внесены изменения. Какие из инструментов рефакторинга войдут в финальную версию продукта, пока не ясно, но в существующей на момент написания статьи демо-версии уже имелись следующие:
- выделение интерфейса, наследования и метода;
- изменение сигнатуры метода;
- инкапсуляция поля;
- переименование классов, функций, переменных;
- добавление и/или изменение порядка следования параметров в функциях;
- замена ArrayList.
7) Раскраска типов и ключевых слов. Теперь текст программы может сиять, как рождественская елка, достаточно настроить раскраску пользовательских типов и ключевых слов.
Безусловно, эти новшества можно считать косметическими, но их появление заслуживает добрых слов. Помимо них есть и другие маленькие радости: IDE научилась автоматически сохранять результаты работы через заданные промежутки времени. Естественно, с предоставлением возможности восстановления при фатальном сбое, что при программировании и отладке более вероятно, чем при банальном наборе. Наконец, модифицирована подсистема поиска (окошко Find and Replace), которая теперь позволяет выполнять поиск в свернутом тексте (так называемый #region). Не остался без внимания и отладчик. Если раньше всплывающая подсказка была активна только для простых (не составных) переменных, то теперь она имеет место и в более сложных случаях: достаточно навести курсор и можно увидеть специальную подсказку (DataTips), демонстрирующую не только значения переменной, но и всю иерархию типа (рис. 7). Следуя современным тенденциям (читай - большим мониторам), появились инструменты для управления все большим числом dock-окошек. Если раньше они скакали, как заправские акробаты, то теперь можно предварительно посмотреть, куда же окно прицепится.

Продолжение статьи - Framework, MSBuild, Microsoft Office Solution Development - на следующей странице.
Framework, система MSBuild, Microsoft Office Solution Development, SQL-сервер Yukon.>>