Рефакторинг кода - это легко
Уменьшите сложность вашего кода, улучшите его читаемость и сделайте его расширяемым, не изменяя его внешнего поведения. Рефакторинг старого кода, кода, который вы унаследовали, или вашего начального варианта проекта.
Доступ к командам рефакторинга
Команды рефакторинга доступны в меню, с помощью клавиатуры и мыши, и содержание меню зависит от контекста. Рефакторинг доступен как в окнах инструментов Visual Assist, так и в текстовом редакторе для символов, выделенных частей и пробельных символов.
Откройте контекстное меню Quick Action and Refactoring для текущего символа с помощью сочетания клавиш по умолчанию Shift+Alt+Q.

Получить полный список команд рефакторинга можно в контекстном меню текстового редактора.

Наведите курсор на символ и Visual Assist отобразит значок если рефакторинг доступен. Нажмите на значок, чтобы открыть контекстно-зависимые меню.

Изменение сигнатуры
Изменение сигнатуры метода из любой ссылки, реализации или объявления.
Обновите сигнатуру метода или функции в простом диалоговом окне, и Visual Assist выведет различия между исходной и новой сигнатурами. Переупорядочивайте, переименовывайте, добавляйте и удаляйте параметры с помощью этого мощного рефакторинга, который также обновляет все ссылки на ваш метод. При переименовании параметра ссылки на него в методе также переименовываются.
Измените любую или все следующие части сигнатуры:
- Имя метода
- Возвращаемый тип
- Видимость
- Имена параметров
- Типы параметров
- Порядок параметров
- Количество параметров
- Квалификаторы
Аналогично рефакторингу переименования, установите область изменения и предварительно просмотрите набор ссылок, которые будут подвергнут рефакторингу.

Конвертировать указатель в экземпляр
Измените указатели объектов на ссылки на объекты и наоборот.
Быстро преобразуйте тип в объявлении, поменяв "." и "->" в ссылках, и отрегулируйте "*" и "&" по мере необходимости.

Инкапсулировать поле - Encapsulate Field
Создание аксессоров к member field путем инкапсуляции этого поля.
Ограничьте действия над member field с помощью рефакторинга Инкапсулировать поле (Encapsulate Field). Аксессоры создаются и именуются автоматически, и ваше исходное поле остается нетронутым в том случае, если вам нужно скомпилировать устаревший код при обновлении ссылок. Если вы инкапсулируете новое поле, немедленно сделайте его private, чтобы ограничить будущий доступ.

В C/C++, аксессоры создаются рядом с объявлением в заголовочном файле и могут оставаться в заголовочном файле для inline- выполнения.

Если вы предпочитаете реализации в исходном файле, выполните Инкапсуляцию поля вместе с другим рефакторингом, чтобы переместить реализации в соответствующий исходный файл.

Переместите сегмент кода в отдельный метод и замените его вызовом извлеченного метода.
Облегчите чтение длинных методов и совместное использование общих блоков кода с помощью рефакторинга Extract Method. Извлеките несколько строк или сегмент одной. Возвращаемое значение и параметры извлеченного метода будут определены и предложены вам.

В C/C++ этот рефакторинг создает встроенный метод в заголовочном файле или извлекает реализацию непосредственно в исходный код.

Ввести переменную -Introduce Variable
Замените выражение на переменную, объясняющую назначение заменяемого кода.
Introduce Variable определяет временную переменную в самой внутренней области выделения, инициализирует временную переменную замененным кодом и заменяет одно или несколько вхождений выражения временной переменной.

В C/C++: легко перемещает реализацию метода из исходного кода в заголовочный файл или объявление класса.
Этот рефакторинг помещает реализации в заголовочные файлы для встроенного выполнения. Рефакторинг также перемещает реализацию метода в объявление класса рядом с другими методами того же класса. Определите формат реализаций с помощью VA Snippet.

Перенести реализацию в файл исходного кода
В C/C++: переместите реализацию метода из заголовочного файла в файл исходного кода.
Этот рефакторинг часто инициируется после других рефакторингов, которые помещают реализации в заголовочные файлы для inline выполнения, например, Encapsulate Field. Рефакторинг создает объявление в заголовке и перемещает реализацию рядом с другими методами того же класса.

Перемещение реализаций методов в файл исходного кода
В C/C++: переместите все реализации из заголовочного файла в файл исходного кода за одну операцию.
В дополнение к команде рефакторинга, которая перемещает одну реализацию, эта множественная версия перемещает все методы из заголовочного файла в класс. Вызовите команду из имени класса, а не из одного из его членов. Появится диалоговое окно, в котором можно выбрать реализации для перемещения.

Переместить выделение в новый файл
Переместите код в новый файл заголовка или исходного кода и автоматически добавьте новый файл в активный проект.
Рефакторинг создает новый файл в том же каталоге, что и активный документ. Определите формат нового файла с помощью VA Snippet. В C/C++ Visual Assist может заменить выделение в активном документе на #include, если выделение перемещено в заголовочный файл.

Переименование -Rename
Быстро и точно переименуйте символы в активном проекте и во всем решении.
Этот часто используемый рефакторинг переименовывает определение и объявление символа, все ссылки на него и, возможно, вхождения в комментарии и строки. Предварительный просмотр всех целей, подлежащих переименованию, всегда отображается, поэтому вы уверены, что переименование делает то, что вы ожидаете. Отмените выбор всех ссылок, которые вы хотите оставить нетронутыми, и отмените всю операцию, если вы допустите ошибку.
Переименование доступно для:
- Классов
- Enums
- Полей
- Макросов
- Методов
- Параметров метода
- Переменных
Выберите пункт Rename в любом меню рефакторинга, укажите новое имя и задайте параметры. Предварительный просмотр изменений различает вхождения, доступные только для чтения и для записи.

Переименование файлов - Rename Files
Переименуйте активный документ, не нарушая сборку.
Переименуйте активный документ и соответствующие ему файлы легко, не прерывая ваш поток работы и не нарушая сборку. Visual Assist автоматически обновляет файлы, проекты и решения, а затем распространяет переименование через системы управления версиями, интегрированные с Microsoft Visual Studio.
В C/C++ заголовочные файлы и файлы исходного кода переименовываются попарно, и переименование заголовочного файла автоматически обновляет все директивы #include которые включают этот заголовочный файл. В C# файлы дизайна и кода переименовываются одновременно.

Упрощение объявления экземпляра - Simplify Instance Declaration
Сделайте объявления объектов более понятными.
Исключите внешнюю настройку объекта на новый экземпляр его типа.

После вызова рефакторинга объект создается и инициализируется в более простом, но эквивалентном объявлении.
