Генерация кода и рефакторинг

Действие Create from usage

В CLion вы можете создавать функции, переменные, члены класса или даже целые классы, прежде чем они будут объявлены. IDE подсветит элемент красным и предложит быстрое исправление. Нажмите Alt+Enter, чтобы добавить соответствующее объявление. Для функций CLion также определяет тип возвращаемого значения и типы параметров.

Intention actions

Intention actions (желаемые действия) помогают применять автоматические изменения к коду, чтобы улучшить его и упростить выполнение рутинных задач. С их помощью можно добавлять поля класса и инициализаторы в конструкторы, применять законы де Моргана к логическим выражениям, вводить typedef, удалять определение из класса и многое другое. Значок лампочки на левом поле редактора указывает на доступность одного или нескольких intention actions. Просто нажмите Alt + Enter, чтобы применить одно из действий.

Live Templates и Surround with

Используйте функцию Live Templates (Code | Insert Live Template или Ctrl+J) для генерации готовых конструкций кода. Полный список доступных шаблонов можно посмотреть в настройках (Editor | Live Templates). При необходимости вы можете создавать свои шаблоны или изменять существующие. Чтобы применить готовый шаблон, просто введите его аббревиатуру и нажмите Tab. Для навигации по переменным шаблона используйте клавиши Enter или Tab.

Используйте шаблоны Surround with, чтобы быстро обернуть выбранный код в конструкцию языка. Выберите пункт меню Code | Surround With или нажмите Ctrl+Alt+T, чтобы легко сгенерировать if, while, for, #ifdef и другие выражения в зависимости от контекста.

Меню Generate

CLion позволяет сэкономить время на печати кода, предоставляя различные варианты кодогенерации в меню Generate (Alt+Insert).

Сгенерировать функции get/set, конструкторы/деструкторы класса, операторы сравнения, равенства и печати (stream output) можно в один клик. СLion позволяет выбирать поля класса, которые необходимо использовать во время генерации, а также указывать различные опции: нужно ли создавать новые конструкции как члены класса, производить ли генерацию на месте, где стоит курсор, использовать ли std::tie в реализации и т.д.

В случае если некоторые операторы уже есть в коде, CLion предложит добавить отсутствующие или полностью заменить существующие.

Implement, Override и Generate Definitions

Почувствуйте всю мощь кодогенерации в CLion, воспользовавшись действиями для создания функций Implement (Ctrl+I), Override (Ctrl+O) и Generate Definitions (Shift+Ctrl+D).

Настройки Generate in-place по умолчанию зависят от вашего кода, так как CLion адаптируется к шаблонам, которые вы используете в проекте, и поддерживает наиболее распространенные случаи (например, классы, полностью расположенные в заголовочных файлах или, наоборот, только в .cpp-файлах и т. д.).

Рефакторинги

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

Чтобы увидеть все рефакторинги, доступные в текущем положении курсора, используйте меню Refactor This... (Ctrl+Alt+Shift+T ).

Список рефакторингов включает:

Rename (Shift+F6) переименует символ и автоматически обновит все необходимые ссылки.

Change Signature (Ctrl+F6) поможет добавить/удалить параметры функции и поменять их порядок, а также изменить тип результата и имя функции, при этом все использования будут обновлены автоматически.

Inline Ctrl+Alt+N уберет лишнюю переменную или вызов функции, заменив их на непосредственное значение/код функции.

Extract (Function Ctrl+Alt+M, Typedef Ctrl+Alt+K, Variable Ctrl+Alt+V, Parameter Ctrl+Alt+P, Define Ctrl+Alt+D, Constant Ctrl+Alt+C, Lambda Parameter) — CLion проанализирует блок кода, для которого вы вызываете рефакторинг, обнаружит входные и выходные переменные и использования выбранного выражения в коде, чтобы заменить их на новую сущность по вашему выбору.

Pull Members Up/Push Members Down помогут с безопасной реорганизацией иерархии классов в вашем проекте.

И не только.