现已推出!阅读 10 月份的新功能和修复。

重构 C++ 代码

Visual Studio Code 中的 C/C++ 扩展具有多个重构功能,可帮助您改进代码的结构、可读性和可维护性,而不会改变其运行时行为。这些功能包括“提取方法”和“创建声明和定义”。

创建声明或定义

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

Create a definition and a declaration across two files

要创建函数声明或定义,请执行以下任一操作:

  • 选择您的类函数定义,选择代码操作(灯泡图标),然后选择“创建声明”。类似地,要创建定义,请选择函数声明,选择代码操作,然后选择“创建定义”。
  • 右键单击函数的声明或定义,然后从上下文菜单中选择“创建定义/声明”。根据您的代码,将创建定义或声明。
  • 选择函数,然后使用“命令面板”(⇧⌘P(Windows、Linux Ctrl+Shift+P)并键入命令“创建定义/声明”。根据您的代码,将创建定义或声明。

创建定义和声明的位置基于您在代码中建立的先前模式。例如,如果您之前将定义和声明添加到同一个文件中,扩展也会将新的定义和声明添加到同一个文件中。函数顺序将自动维护。

Create a definition and a declaration in the same file

如果您在与源文件不同的文件中定义了声明或定义,扩展将遵循您的约定。例如,对于具有匹配名称的标头文件和源文件,即使标头文件未包含在源文件中,也会识别这两个文件。在这种情况下,添加声明或定义后,您的标头文件将自动引用您的源文件。

否则,扩展会为您创建一个与当前文件名称匹配的新标头文件或源文件。此新文件包含已生成的新的声明或定义。然后,新文件将自动引用您的当前文件。

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

复制声明或定义

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

要调用代码操作,请选择具有快速修复功能的函数,然后选择代码操作(灯泡)并选择“复制 'YourFunctionName' 的定义”或“复制 'YourFunctionName' 的声明”。

Copy a declaration or definition

提取到方法

“提取方法”重构功能使您可以将代码块提取到单独的方法中,以帮助提高代码可读性,减少重复并使代码更模块化。

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

然后,您可以命名创建的新函数。包含所选代码的新函数将放置在当前函数上方。

Extract Method and create declaration

快速修复/代码操作

C/C++ 扩展根据您的代码上下文,为如何修复和改进 C++ 代码提供特定于 C++ 的建议。通过将鼠标悬停在符号上并选择“快速修复”链接,或选择代码操作(灯泡)来查看这些建议,因为它会出现在您的代码旁边。例如,如果代码部分可以提取到方法中,选择灯泡图标将显示“提取到方法”。除了上述功能外,C/C++ 扩展还在以下情况下提供快速修复/代码操作:

添加缺少的标头文件

如果您的 C++ 代码中存在未知符号,并且 C/C++ 扩展在您的工作区中识别出正确的标头文件,现在可以使用快速修复功能。选择快速修复功能,并将必要的标头文件包含添加到当前 C++ 文件的顶部。

Add Missing Include in code using a code action

下一步

继续阅读以了解有关

如果您还有其他问题或遇到任何问题,请在 GitHub 上提交问题。您可能会被要求提供来自扩展的日志信息以帮助诊断问题。有关提供扩展日志的帮助,请参阅 C/C++ 扩展日志记录