重构 C++ 代码

Visual Studio Code 中的 C/C++ 扩展具有多种重构功能,帮助你在不改变运行时行为的情况下,提升代码的结构、可读性和可维护性。这些功能包括提取方法、创建声明和定义等功能。

创建声明或定义

通过让 C/C++ 扩展自动生成这些项,简化创建函数声明或定义的过程。此功能适用于成员函数、类命名空间和模板。

创建定义和声明,跨越两个文件

要创建函数声明或定义,可以:

  • 选择你的类函数定义,选择代码动作(灯泡图标),然后选择创建声明。同样,创建定义时,选择函数声明,选择代码动作,然后选择创建定义
  • 右键点击函数的声明或定义,然后从上下文菜单中选择创建定义/声明。基于你的代码,会创建一个定义或声明。
  • 选择函数,然后使用命令调色板⇧⌘P(Windows,Linux Ctrl+Shift+P),输入命令“Create Declaration/Definition”。基于你的代码,会创建一个定义或声明。

定义和声明创建的位置基于你之前在代码中建立的模式。例如,如果你之前在同一文件中添加了定义和声明,扩展也会在同一文件中添加新的定义和声明。功能顺序会自动保持。

在同一文件中创建一个定义和一个声明

如果你在与源文件不同的文件中定义了声明或定义,扩展则遵循你的惯例。例如,对于名称相符的头部和源文件,即使头文件未包含在源文件中,也会被识别。在这种情况下,一旦声明或定义被添加,你的头文件会自动在源文件中被引用。

否则,扩展会为你创建一个新的头部或源文件,与你当前文件的名称匹配。这个新文件包含了新生成的声明或定义。新文件会自动在当前文件中被引用。

对于模板,如果在头文件中声明了函数模板,该函数模板的定义也会在同一头文件中创建。这同样适用于类模板的非模板成员函数。

复制声明或定义

如果你想选择代码中添加声明或定义的位置,可以使用代码作“复制声明/定义”。这样可以把声明或定义添加到剪贴板上,而不是直接添加到代码中。

要调用代码动作,选择一个有快速修复可用的函数,然后选择代码动作(灯泡),选择复制“YourFunctionName”的定义或“Copy”声明

复制声明或定义

从提取到方法

Extract 方法重构功能允许你将代码块提取到一个独立的方法中,以提升代码可读性、减少重复,并使代码更具模块化。

要提取方法,选择你想提取的C++代码,选择代码动作(灯泡),然后选择提取到函数。或者,右键点击代码,选择重构>提取,或者使用键盘命令(Ctrl + Shift + R,Ctrl + E在Windows上)以获取更多信息。

然后你可以为新创建的函数命名。包含你所选代码的新函数会放在当前函数之上。

提取方法并创建声明

快速修复/代码作

C/C++扩展提供了针对C/C++的具体建议,基于你的代码上下文修正和改进你的C++代码。您可以通过将鼠标悬停在符号上并选择快速修正链接,或在代码旁边出现的代码动作(灯泡)中选择来查看这些建议。例如,如果某段代码可以提取到某个方法,选择灯泡图标会显示“提取到方法”。除了上述功能外,C/C++ 扩展还能在以下情况下提供快速修复和代码作:

添加缺失的头文件

如果你的C++代码中存在未知符号,而C/C++扩展能识别工作区中的正确头文件,现在就有一个快速修复方法。选择快速修复,所需的头文件 include 会被添加到你当前的 C++ 文件顶部。

使用代码作添加缺失包含

下一步

继续阅读,了解:

如果你还有其他问题或遇到问题,请在GitHub提交问题。你可能会被要求提供扩展的日志信息,以帮助诊断问题。有关提供扩展日志的帮助,请参见 C/C++ 扩展日志