WholeTomato

Рефакторинг кода - это легко

Уменьшите сложность вашего кода, улучшите его читаемость и сделайте его расширяемым, не изменяя его внешнего поведения. Рефакторинг старого кода, кода, который вы унаследовали, или вашего начального варианта проекта.

Доступ к командам рефакторинга

Команды рефакторинга доступны в меню, с помощью клавиатуры и мыши, и содержание меню зависит от контекста. Рефакторинг доступен как в окнах инструментов Visual Assist, так и в текстовом редакторе для символов, выделенных частей и пробельных символов.

Откройте контекстное меню Quick Action and Refactoring для текущего символа с помощью сочетания клавиш по умолчанию Shift+Alt+Q.

context aware refactoring menu

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

Obtain a complete list of refactoring commands in the context menu

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

Hover over a symbol and Visual Assist displays an icon when refactoring is available


Изменение сигнатуры

Изменение сигнатуры метода из любой ссылки, реализации или объявления.

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

Измените любую или все следующие части сигнатуры:

  • Имя метода
  • Возвращаемый тип
  • Видимость
  • Имена параметров
  • Типы параметров
  • Порядок параметров
  • Количество параметров
  • Квалификаторы

Аналогично рефакторингу переименования, установите область изменения и предварительно просмотрите набор ссылок, которые будут подвергнут рефакторингу.

x


Конвертировать указатель в экземпляр

Измените указатели объектов на ссылки на объекты и наоборот.

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

Change object reference to object pointer


Инкапсулировать поле - Encapsulate Field

Создание аксессоров к member field путем инкапсуляции этого поля.

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

Create accessors to a member field by encapsulating the field

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

In C/C++, accessor methods are created adjacent to a declaration in a header file

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

Move the implementations to a corresponding source file


Извлечь метод - Extract Method

Переместите сегмент кода в отдельный метод и замените его вызовом извлеченного метода.

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

Move a segment of code into a separate method, and replace the segment with a call to the extracted method

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

In C/C++, the refactoring creates an inline method in a header file


Ввести переменную -Introduce Variable

Замените выражение на переменную, объясняющую назначение заменяемого кода.

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

Replace an expression with a variable that explains the purpose of the replaced code.


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

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

Move Implementation to Header File


Перенести реализацию в файл исходного кода

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

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

Move Implementation to Source File


Перемещение реализаций методов в файл исходного кода

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

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

Move Method Implementations to Source File


Переместить выделение в новый файл

Переместите код в новый файл заголовка или исходного кода и автоматически добавьте новый файл в активный проект.

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

Move code to a new header file or source file


Переименование -Rename

Быстро и точно переименуйте символы в активном проекте и во всем решении.

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

Переименование доступно для:

  • Классов
  • Enums
  • Полей
  • Макросов
  • Методов
  • Параметров метода
  • Переменных

Выберите пункт Rename в любом меню рефакторинга, укажите новое имя и задайте параметры. Предварительный просмотр изменений различает вхождения, доступные только для чтения и для записи.

Select Rename from any of the refactoring menus


Переименование файлов - Rename Files

Переименуйте активный документ, не нарушая сборку.

Переименуйте активный документ и соответствующие ему файлы легко, не прерывая ваш поток работы и не нарушая сборку. Visual Assist автоматически обновляет файлы, проекты и решения, а затем распространяет переименование через системы управления версиями, интегрированные с Microsoft Visual Studio.

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

Rename your active document without breaking the build


Упрощение объявления экземпляра - Simplify Instance Declaration

Сделайте объявления объектов более понятными.

Исключите внешнюю настройку объекта на новый экземпляр его типа.

Simplify an instance declaration

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

Simplified instance declaration