CLion Nova 重构
CLion Nova 提供以下额外的重构功能:
引入字段
此重构基于选定的表达式创建一个新字段,用该表达式或构造函数对其进行初始化,并用新引入的字段的引用替换表达式的出现。
要调用此重构,请按 Ctrl+Alt+F。
在下面的示例中,我们使用此重构将两个相同字符串的出现替换为一个新的私有字段,并从现有构造函数中对其进行初始化:
#include <exception>
#include <iostream>
class ErrorHandler {
ErrorHandler() {}
public:
void logError(std::exception& e) {
auto errorLogFIle = fopen("log.txt", "w");
fprintf(errorLogFIle, "Something has failed: %s", e.what());
fclose(errorLogFIle);
}
void printError(std::exception& e) {
printf("Something has failed: %s", e.what());
}
};
#include <exception>
#include <iostream>
class ErrorHandler {
ErrorHandler(): error_message("Something has failed: %s") {}
public:
void logError(std::exception& e) {
auto errorLogFIle = fopen("log.txt", "w");
fprintf(errorLogFIle, error_message, e.what());
fclose(errorLogFIle);
}
void printError(std::exception& e) {
printf(error_message, e.what());
}
private:
const char* error_message;
};
引入命名空间别名
此重构帮助您为命名空间的使用创建一个命名空间别名,并用该别名替换当前选定的使用或当前文件中的所有使用。 根据选定的用法,命名空间别名会在尽可能接近用法的作用域内声明。
调用引入命名空间别名
将插入符号放在命名空间的使用处,按 Ctrl+Alt+Shift+T ,然后在“重构此”弹出窗口中选择 引入命名空间别名。
如果文档中存在命名空间使用的多个出现,您可以选择替换当前使用或所有使用。
在下面的示例中,我们使用此重构为 SpaceOne::SpaceTwo 命名空间添加一个命名空间别名。
namespace SpaceOne
{
namespace SpaceTwo
{
int ten = 10;
inline void foo()
{
// do something
}
}
}
inline int test()
{
SpaceOne::SpaceTwo::foo();
return SpaceOne::SpaceTwo::ten;
}
namespace SpaceOne
{
namespace SpaceTwo
{
int ten = 10;
inline void foo()
{
// do something
}
}
}
inline int test()
{
namespace s_two_alias = SpaceOne::SpaceTwo;
s_two_alias::foo();
return s_two_alias::ten;
}
引入使用枚举
C++20 using enum 语法允许您从目标枚举中添加所有枚举器。 因此,使用其成员枚举器时,您可以省略枚举名称的重复。
调用引入使用枚举
将插入符号放在命名空间的使用处,按 Ctrl+Alt+Shift+T ,然后在“重构此”弹出窗口中选择 引入使用枚举。
CLion Nova 还会检测
using enum适用的代码片段,并在 Alt+Enter 菜单中建议进行重构:
如果文档中有多次出现的枚举使用,请选择替换当前使用或所有使用:

CLion Nova 将就地执行重构:

转换为作用域枚举
转换为作用域枚举 重构帮助您将 C 风格的枚举声明转换为 C++11 作用域枚举。
要调用它,请将插入符号放在枚举器处,按 Ctrl+Alt+Shift+T 并选择 转换为作用域枚举。
最后修改日期: 2025年 9月 26日