top of page
Поиск

Рефакторинг C++ кода в Visual Studio 2015

  • Фото автора: Илья Лавренов
    Илья Лавренов
  • 19 нояб. 2014 г.
  • 2 мин. чтения

В прошлую пятницу вышел релиз 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-последовательностями. Функция вызывается из контекстного меню в любом месте строки.


 
 
 

Недавние посты

Смотреть все
Спецификатор constexpr в C++11 и в C++14

Одна из новых возможностей C++11 — спецификатор constexpr. С помощью него можно создавать переменные, функции и даже объекты, которые...

 
 
 

Comments


Мы в соцсетях

© 2011-2017 «Программирование. Помощь студентам».

bottom of page