Visual Studio 2005
dl // 30.10.05 12:40
Visual Studio 2005 достигла стадии релиза и ушла в производство.
[Не забывайте при копировании материала указывать полный адрес источника: //bugtraq.ru/rsn/archive/2005/10/12.html]
Официальные продажи начнутся чуть позже, но подписчикам MSDN она уже доступна. Всего будет пять вариантов поставок - Express edition (отдельные облегченные варианты Visual Basic, Visual C#, Visual C++, Visual J#, ориентированные на начинающих; бета-версии доступны бесплатно, окончательные варианты предполагается продавать за 49 долларов); Standard Edition (базовый вариант "полноценной" системы), Professional Edition (среди добавлений - 64-битный компилятор, интеграция с SQL Server 2005, отладка удаленных приложений); Visual Studio Tools for Office (по сравнению с Professional Edition - в комплекте только VB и VC#, плюс возможность разработки приложений для Office 2003) и, наконец, Visual Studio Team System, включающая профайлер, средства коллективной разработки, тестирования и т.п.
Первые впечатления очень приятные. Освеженный интерфейс (например, файлы можно не только открывать в закладках, но и формировать несколько групп закладок, которые видны одновременно - очень удобно при одновременной работе с несколькими файлами, хелпом и т.п.), куча нового функционала. Основной праздник, конечно, на улице разработчиков под .NET вообще и С# в частности. Навскидку - поддержка шаблонов и анонимных функций в языке, новые управляющие элементы от .NET 2.0, Class Designer, дающий нарисовать иерархию классов, которая сразу воплощается в код, Object Test Bench, позволяющая потестировать объекты сразу при написании кода, конвертер ява-кода в C#, возможность посмотреть дерево вызовов функций (кого вызывала эта функция, кто вызывал ее и далее по цепочке), средства рефакторинга (более-менее интеллектуальный rename, выкусывание части кода в отдельные функции, создание свойств из полей, удаление параметров и т.п.).
На долю С++ осталось несколько меньше. Дерево вызовов функций работает и тут, что весьма полезно при анализе кода (хотя к хорошему быстро привыкаешь и начинаешь обижаться на то, что оно не срабатывает с виртуальными функциями из потомков, вызыванных через предков - впрочем, ссылка на функцию из предка при этом все же показывается, так что не все потеряно). Усилен Class View, превратившийся практически в полноценный броузер классов, теперь в нем можно просматривать потомков и предков, унаследованные функции, прятать/показывать закрытые/открытые функции и атрибуты. Добавилось Code Definition Window - быстрый read only просмотр классов/функций, выбранных в Class View или просто в коде. Любопытна закладка Property Manager, позволяющая быстро добавить ряд заранее определенных настроек проекта (как стандартных, так и самостоятельно добавленных, удобно при переносе настроек для однотипных проектов без нудного прохода по свойствам проекта). Можно забыть об отладочных печатях и макросах TRACE - помимо привычных точек останова появились tracepoints, которые можно устанавливать на лету, задавая вывод значений переменных, имен сработавших функций и т.п. Добавилась встроенная поддержка OpenMP, упрощающая разработку параллельно исполняющегося кода. Довольно любопытно стало наблюдать за сборкой проекта, включающего несколько подпроектов - их номера теперь выводятся перед именами файлов, и четко видно, как одновременно компилируются файлы из разных подпроектов. Ушла оптимизация под различные процессоры, осталась только blended model.
При переносе старого кода стоит учесть гораздо более строгую работу с указателями на функции-члены, объявление устаревшими (deprecated) огромного количества потенциально опасных функций (типа strcpy, scanf, ворох приходящих от этого предупреждений пока отключается, но в дальнейшем вместо них рекомендовано использовать более безопасные версии, включающие в имена суффикс _s и, как правило, дополнительный параметр, задающий длину буфера). Также стоит учесть, что при настройках по умолчанию областью видимости переменных, объявленных в заголовке цикла, является только сам цикл (т.е. параметр /Zc:forScope, которым можно было пользоваться и раньше, теперь по умолчанию включен). Наконец, все это хозяйство спокойно встает рядом с VS.NET 2003, так что можно позволить себе плавный переход.