Hello C++ World!
В прошлую пятницу вышел релиз Visual Studio 2015 Preview, в котором были представлены новые возможности увеличения продуктивности разработки, в том числе рефакторинг кода на С++. В значительной мере на реализацию этого функционала повлияли отзывы комьюнити, которые были получены в ходе тестирования Visual Studio «14» CTPs, так что спасибо всем поучаствовавшим.
В этой статье мы рассмотрим такие возможности Visual Studio 2015 Preview по работе над С++ кодом, как:
- Переименование (Rename)
- Извлечение функции (Extract Function)
- Генерация заглушек чисто виртуальных методов (Implement Pure Virtuals)
- Генерация объявлений/заглушек методов (Create Declaration/Definition)
- Перемещение объявлений функций (Move Function Definition)
- Преобразование в Raw-String (Convert to Raw-String Literal)
Переименование, безусловно, наиболее часто нужный инструмент. Таким образом мы поместили его в самом верху контекстного меню при правом клике на классефункциипеременной. Кроме того, мы можете активировать его двойным нажатием комбинации Ctrl+R. Сам инструмент двухшаговый — в первом окне вы указываете настройки переименования, второе окно — превью.
Полезные подсказки
- Вы можете отключить поиск переименовываемого символа в комментариях и строковых литералах в первом окне (галочка «Search comments/strings»)
- Также вы можете включить просмотр найденных в комментариях и строках символов, но не переименовывать их (галочка «Rename comments/strings»)
- Больше информации об этой фиче вы можете найти вот в этом видео
Извлечение функции было второй по количеству запросов фичей. Мы всё ещё в процессе работы над ней, так что пока что она реализована в виде расширения. После его установки выделите блок кода, который хотите выделить в отдельную функцию, затем правый клик и в меню «Refactor…» выберите «Extract Function/Method».
Полезные подсказки
- Инструмент имеет кое-какие средства валидации кода, но всё же для нормальной работы старайтесь выделять валидный, целостный блок кода.
- Извлекаемая функция сохраняет контекст. Это означает, что если вы извлекаете часть кода из метода какого-либо класса, то новая функция будет методом этого же класса.
Генерация заглушек виртуальных методов позволяет создать тела всех чисто виртуальных методов в наследуемом классе. Поддерживается множественное наследование. Инструмент вызывается из контекстного меню объявления класса.
Полезные подсказки
- Инструмент генирирует объявления методов в заголовочном файле, а сами заглушки — в cpp-файле.
- Вы можете вызвать генерацию заглушек только для одного из базовых классов, из контекстного меню названия этого класса в объявлении наследуемого класса:
- Операция отмены (undo) удалит все сгенерированные заглушки, но не удалит cpp-файл, если он был создан на предыдущем шаге
- Больше информации об этом инструменте вы можете найти в этом видео
Важный момент: все вышеперечисленные функции работают только при включенном IntelliSense.
Генерация объявлений/заглушек методов позволяет вам быстро сгенерировать недостающее объявление или заглушку тела метода.
Полезные подсказки
- Методы, имеющие тело, но не определённые в заголовочном файле будут подчёркнуты волнистой зелёной линией
- Можно сгенирировать определениязаглушки сразу для нескольких методов (нужно выделить все и выбрать в контекстном меню «Refactor->Create Declaration/Definition»)
- Больше информации об этом инструменте вы можете найти в этом видео
Перемещение объявлений методов позволяет быстро переместить тело метода из заголовочного файла в cpp-файл или наоборот.
Полезные подсказки
- Больше информации об этом инструменте вы можете найти в этом видео
Преобразование в Raw-String позволяет вам сконвертировать любую строку в Raw-String, что значительно улучшает читабельность строк с escape-последовательностями. Функция вызывается из контекстного меню в любом месте строки.
Полезные подсказки
- В данный момент поддерживаются только следующие символы: n, t, ', ", ?
- Если в вашей строке есть другие escape-последовательности вы получите сообщение об ошибке
- Обратного преобразования нет — пользуйтесь undo
Автор: tangro