- 最新动态
- 产品介绍
- 快速入门
-
用户指南
- 下载CodeArts IDE客户端
- 登录CodeArts IDE客户端
- 激活CodeArts IDE客户端
- 配置CodeArts IDE用户权限
- CodeArts IDE产品功能介绍
- CodeArts IDE基础操作介绍
- 使用CodeArts IDE for C/C++
- 使用CodeArts IDE for Java
- 使用CodeArts IDE for Python
- 使用CodeArts IDE for RemoteShell
- 最佳实践
- 常见问题
- API参考
- 文档下载
- 通用参考
链接复制成功!
重构代码操作简介
代码重构可以通过重构代码而不修改其运行行为来提高项目的质量和可维护性。CodeArts IDE支持重构操作,以在编辑器中改进代码库。
例如,用于避免重复代码的常见重构是提取方法重构,在这种重构中,您可以将希望重用的代码拉到其自己的共享方法中。
重构由语言服务提供,CodeArts IDE内置了对TypeScript、JavaScript和Java的重构支持。
代码操作
在CodeArts IDE中,代码操作可以为检测到的问题提供重构和快速修复(以绿色曲线突出显示)。如果代码操作可用,则当光标位于曲线或选定文本区域上时,灯泡图标将显示在代码附近。单击代码操作灯泡图标或使用快速修复命令“Alt+Enter”将显示快速修复和重构建议。如果您只想查看没有快速修复的重构,请使用重构命令。
要禁用代码编辑器中的代码操作灯泡图标,请调整editor.lightbulb.enable设置。您仍然可以通过快速修复命令和“Alt+Enter”键盘快捷键打开快速修复。
提取方法
选择要提取的代码,然后单击装订线中的灯泡图标,或按“Alt+Enter”键查看可用的重构。源代码片段可以提取到新方法中,也可以提取到不同范围的新函数中。在提取重构期间,系统将提示您提供有意义的名称。
提取变量
TypeScript语言服务提供Extract to constant重构,为当前选定的表达式创建新的局部变量:
使用类时,还可以将值提取到新属性中。
重命名符号
重命名是与重构源代码相关的常见操作,CodeArts IDE有一个单独的“重命名符号”命令(“Shift+F6”)。某些语言支持跨文件重命名符号。按“Shift+F6”,键入新的所需名称,然后按Enter键。文件中符号的所有用法都将重命名。
代码操作的键绑定
editor.action.codeAction命令允许您为特定代码操作配置键绑定。例如,此键绑定触发提取函数重构代码操作:
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.function"
}
}
代码操作类型由扩展使用增强的CodeActionProvided API指定。种类是分层的,因此"kind": "refactor" 将显示所有重构代码操作,而“ "kind": "refactor.extract.function"”将仅显示提取函数重构。
使用上述键绑定,如果只有单个“refactor.extract.function”代码操作可用,则将自动应用该代码操作。如果有多个提取函数代码操作可用,您可以从上下文菜单中选择所需的代码操作。
您还可以使用应用参数控制自动应用代码操作的方式和时间:
{
"key": "ctrl+shift+r ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.function",
"apply": "first"
}
}
“apply”的有效值:
- first - 始终自动应用第一个可用的代码操作。
- ifSingle - 默认情况下。如果只有一个代码操作可用,则自动应用代码操作。否则,显示上下文菜单。
- never - 始终显示代码操作上下文菜单,即使只有一个代码操作可用。
当代码操作键绑定配置为"preferred": true时,仅显示首选的快速修复和重构。首选的快速修复解决了基础错误,而首选的重构是最常见的重构选择。例如,虽然可能存在多个refactor.extract.const重构,但每个重构都提取到文件中的不同作用域,但首选的refactor.extract.constant重构项是提取到局部变量的重构。
此键绑定使用"preferred": true创建始终尝试将选定源代码提取到本地作用域中的常量的重构:
{
"key": "shift+ctrl+e",
"command": "editor.action.codeAction",
"args": {
"kind": "refactor.extract.constant",
"preferred": true,
"apply": "ifSingle"
}
}