本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

C# 快速操作和重构

Visual Studio Code 提供了许多方式来重构您的源代码以及在编码时快速修复代码和解决问题。要访问这些功能,请点击出现的“灯泡”图标或使用命令Quick Fix命令⌘.(Windows, Linux Ctrl+.显示快速修复和重构选项的列表。您还可以右键单击编辑器并选择Refactor ⌃⇧R(Windows, Linux Ctrl+Shift+R仅显示重构选项。

支持的重构和快速修复

添加 await

什么: 添加 等待将关键字转换为函数调用。

何时: 当你在异步方法中调用一个函数时。

操作指南:

  1. 在函数调用处放置光标(很可能会用红色下划线标出)。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 添加 等待输入:.

添加 await 示例

添加成员的构造函数参数

做什么: 根据选定的类成员生成一个带有参数的新构造函数。

何时: 当你引入一个新的构造函数,并希望自动正确声明它以及所有正确的参数。

为什么: 你可以在使用之前声明构造函数,但是这个功能会自动生成它。

操作指南:

  1. 突出显示您希望作为构造函数参数添加的类成员。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 生成构造函数 <classname>(<membertype>, <membertype>, <等等>).

添加从成员示例的构造函数参数

添加 DebuggerDisplay 属性

什么: The DebuggerDisplay Attribute 控制在调试器变量Windows中对象、属性或字段的显示方式。

何时: 你希望 在代码中通过编程方式固定属性 在调试器中。

为什么: 固定属性允许您通过其属性快速检查对象,通过将该属性提升到对象属性列表的顶部来在调试器中进行检查。

操作指南:

  1. 将光标放在任何类型、委托、属性或字段上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单并选择 添加 调试器显示 属性.
  3. 调试器显示添加了一个属性,并且添加了一个自动方法,该方法返回默认值ToString()输入:.

添加 DebuggerDisplay 属性示例

添加显式转换

做什么: 可以根据使用情况自动将表达式转换为明确的类型。

何时:您需要将表达式明确转换并自动分配它。

为什么: 你可以手动为表达式添加显式转换,但是这个功能会根据代码上下文自动添加。

操作指南:

  1. 将光标置于错误处。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择添加显式转换.

添加文件头

做什么: 使用一个EditorConfig为现有的文件、项目和解决方案添加文件头。

何时: 你想轻松地为文件、项目和解决方案添加文件头。

原因: 您的团队需要您为版权原因包含文件头。

操作指南:

  1. 如果还没有的话,向项目或解决方案添加一个EditorConfig
  2. 将以下规则添加到你的EditorConfig文件中:文件头模板输入:.
  3. 将规则的值设置为您希望应用的标题文本。您可以使用{fileName}作为文件名的占位符。
  4. 将插入点放在任何 C#Files的第一行。
  5. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  6. 选择 添加文件头.

添加缺失的 using / import

做什么: 让你立即为复制粘贴的代码添加所需的导入或使用指令。

何时: 在项目中复制代码并将其粘贴到新代码中是常见的做法。此快速操作可以找到粘贴代码中缺失的导入指令,然后提示您添加这些指令。此代码修复还可以在项目之间添加引用。

为什么: 因为快速操作会自动添加必要的导入,所以您不需要手动复制代码所需的using指令。

操作指南:

  1. 从一个文件复制代码并粘贴到一个新的文件中,而不包括必要的using指令。结果错误伴随着一个代码修复,添加缺失的using指令。
  2. 选择⌘.(Windows, LinuxCtrl+.以打开快速操作和重构菜单。
  3. 选择 使用 <你的参考> 添加缺失的参考。

添加缺失的 / imports 示例

添加命名参数

做什么: 在函数调用中向指定参数值追加一个命名参数。

何时: 如果你有一个带有许多参数的方法,你可以添加命名参数以使你的代码更易读。

操作指南:

  1. 将光标放在函数调用中的某个参数内。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 添加参数名称 <参数名称>.

添加命名参数示例

将匿名类型转换为类

做什么: 将匿名类型转换为类。

何时: 你有一个匿名类型,你想在类中继续扩展它。

为什么: 如果你只在本地使用匿名类型,匿名类型很有用。随着代码的增长,能够轻松地将它们提升为类是非常方便的。

操作指南:

  1. 将光标放在匿名中 (变量) 类型。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 转换为类.

将匿名类型转换为类示例

在自动属性和完整属性之间进行转换

内容: 在自动实现的属性和完整属性之间进行转换。

何时: 属性的逻辑已更改。

为什么: 你可以手动将自动实现的属性转换为完整的属性,但是此功能会自动为你完成工作。

操作指南:

  1. 将光标放在属性名称上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下两个选项中选择:

选择转换为全属性。

转换为完整的属性示例

选择 使用自动属性。

使用自动属性示例

在直接转换和 'as' 表达式之间进行转换

做什么: 使用该方法在常规转换和尝试转换之间转换变量作为关键词。

何时: 当你预计在某些情况下演员阵容会失败 (作为) 或者如果你从不期望投篮会失败(直接投篮)。

操作指南:

  1. 将光标放在变量上。
  2. ⌘. (Windows, Linux Ctrl+.) 触发 快速操作和重构 菜单。
  3. 从以下两个选项中选择:

选择 更改为施法.

更改到铸造示例

选择 更改为 作为表达。

更改为表达式示例

在 for 循环和 foreach 语句之间进行转换

什么: 如果你的代码中有一个for循环,你可以使用这个提取重构将其转换为一个foreach语句。

为什么: 你可能希望将for循环转换为foreach语句的原因包括:

  • 你不要在循环体内使用局部循环变量,除非用作访问项目的索引。
  • 你想简化你的代码,并减少在初始化器、条件和迭代器部分出现逻辑错误的可能性。

将 foreach 语句转换为 for 循环的原因可能包括:

  • 您希望在循环中使用局部循环变量,不仅仅是为了访问项目。
  • 您正在遍历多维数组,并且希望对数组元素有更多控制。

操作指南:

  1. 将光标放置在每个对于关键词。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下两个选项中选择:

选择 转换为 对于输入:.

转换为示例

选择 转换为 每个输入:.

转换为

在 Get 方法和属性之间进行转换

将获取方法转换为属性

做什么: 让你将Get方法转换为属性(并可选地转换你的Set方法)。

何时: 你有一个不包含任何逻辑的GetMethod。

操作指南:

  1. 将光标放在你的Get方法名称上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. (可选)如果您有Set方法,您也可以在此时将其转换。选择用属性替换<获取方法或设置方法名称>

用属性示例替换获取方法

将属性转换为Get方法

做什么: 让你可以将一个属性转换为一个Get方法

何时: 你有一个涉及立即设置和获取值的属性

操作指南:

  1. 将光标放在你的Get方法名称上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择将<属性名>替换为方法.

用方法示例替换属性名称

在if语句和switch语句之间进行转换

什么: 转换一个 如果 语句到一个 switch 语句 或到 C# 8.0 switch 表达式

何时: 你想转换一个 如果声明到一个开关声明或一个开关表达式和反之。

为什么: 如果你正在使用一个如果声明,此重构使向 switch 语句或 switch 表达式的过渡变得容易。

操作指南:

  1. 将光标放在如果关键词。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择:

选择 转换为 开关 声明.

转换为  语句示例

选择 转换为 开关 表达式.

转换为表达式示例

选择 转换为 如果 声明.

转换为  语句示例

在普通字符串和原字符串之间进行转换

做什么: 使你能够在普通字符串和原字符串之间进行转换。

何时使用: 你希望节省空间或在代码中提供更多的清晰度。

为什么: 将原始字符串字面量转换为普通字符串字面量可以节省空间。将普通字符串字面量转换为原始字符串字面量可以提高清晰度。

操作指南:

  1. 将插入点放在普通字符串或原始字符串字面上:
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择 转换为普通字符串.

选择 转换为原字符串.

将类转换为记录

做什么: 将你的类转换为 C# 记录。

何时: 当你想快速将类更改为记录,记录是为存储数据和 immutability 而设计的。

操作指南:

  1. 将光标放在类名上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 转换为位置记录.

在示例之前将类转换为记录

在示例之后将类转换为记录

将本地函数转换为方法

内容: 将局部函数转换为方法。

何时: 你有一个局部函数,你想在当前局部作用域之外定义它。

为什么: 您希望将局部函数转换为方法,以便可以在局部上下文之外调用它。当您的局部函数变得太长时,您可能希望将其转换为方法。当您在单独的方法中定义函数时,您的代码更易于阅读。

操作指南:

  1. 将光标放在局部函数中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 转换为方法.

将本地函数转换为方法示例

将数值常量转换为十六进制、十进制或二进制数

内容: 在十六进制、二进制或十进制之间转换一个数字。

何时使用: 当您希望在不需要手动计算转换的情况下自动将数字转换为所需的基数时使用。

操作指南:

  1. 将光标放在数字常量上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择 转换为十进制.

转换为十进制示例

选择 转换为十六进制.

转换为十六进制示例

选择 转换为二进制.

转换为二进制示例

将占位符转换为插值字符串

什么: 转换一个 字符串格式化将格式化结果字符串(或占位符)转换为插值字符串。

何时使用: 当你想要快速创建一个插值字符串时。

为什么: 插入字符串可以给你一个更易读的版本 字符串格式化并且可以让你直接访问你的变量名。

操作指南:

  1. 将光标放在字符串格式化占位符。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 转换为插值字符串.

将占位符转换为插值字符串示例

将普通字符串转换为插值字符串

内容: 将普通字符串更改为插值字符串。

何时使用: 当你想要清理代码并使其更易读时使用。

操作指南:

  1. 将光标放在您要转换的字符串上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 转换为插值字符串.

在示例之前转换为插值字符串

在示例之后转换为插值字符串

将元组转换为结构体

什么: 将你的元组转换为一个 结构体

何时: 当你想快速将元组转换为列表时结构体并且希望有固定的数据可以多次访问。

操作指南:

  1. 将光标放在元组上。

  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。

  3. 从以下选项中选择一个:

    • 选择 转换为 结构体- 更新包含成员的用法
    • 选择 转换为 结构体- 更新包含类型的用法
    • 选择 转换为 结构体- 更新包含项目的使用情况
    • 选择 转换为 结构体- 更新依赖项目的使用情况

将元组转换为选项

将元组转换为示例

封装字段

做什么: 让你将一个字段转换为一个属性,并更新所有该字段的使用以使用新创建的属性。

何时: 您希望将一个字段移动到一个属性,并更新所有对该字段的引用。

为什么: 你想让其他类访问一个字段,但又不想让这些类直接访问。通过将字段包装在属性中,你可以编写代码来验证分配的值,例如。

操作指南:

  1. 将光标放在字段名称内以进行包裹。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择 封装字段: <fieldname> (并使用属性).

封装字段并使用属性示例

选择 封装字段: <fieldname> (但仍然使用字段).

封装字段但仍使用字段示例

生成比较运算符

做什么: 让你为实现的类型生成比较运算符可比较输入:.

何时: 你有一个实现了 可比较我们将自动添加比较运算符。

为什么: 如果你正在实现一个值类型,你应该考虑重写 等于一种提高性能的方法,超越了默认实现的等于方法在值类型输入:.

操作指南:

  1. 将光标放在类内或放在IComparable关键字上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 生成比较运算符 从下拉菜单中。

生成默认构造函数

做什么: 让你立即生成类的新默认构造函数的代码。

何时: 当你引入一个新的默认构造函数并希望自动正确声明它时。

为什么: 你可以在使用之前声明构造函数,但是这个功能会自动生成它。

操作指南:

  1. 将光标放在类名上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 生成构造函数 <classname>().

生成默认构造函数示例

生成参数

做什么: 自动生成方法参数。

何时: 当你在当前上下文中引用的方法不存在时,你收到一个错误;你可以生成一个参数作为代码修复。

为什么: 你可以快速修改方法签名而不失去上下文。

操作指南:

  1. 将光标放在变量名称上。
  2. ⌘. (Windows, Linux Ctrl+.) 触发 快速操作和重构 菜单。
  3. 选择 生成参数.

生成参数示例

显式实现所有成员

内容: 明确在类中定义接口的方法。 显式接口实现是仅通过指定接口调用的类成员。

何时: 使用时机:

  • 你不希望相同的实现被调用用于多个接口。
  • 你希望解决两个接口各自声明同名但不同成员(如属性和方法)的冲突情况。

操作指南:

  1. 将光标放在类中正在实现的接口上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择显式实现所有成员:

实现所有成员的示例

实现所有成员隐式地

内容: 在类中隐式定义接口的方法。隐式接口实现是指将接口的方法和属性直接添加到类中作为公共方法。

操作指南:

  1. 将光标放在类中正在实现的接口上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择实现接口:

实现所有成员隐式地

内联方法

做什么:内联方法重构。

何时: 您希望在单个语句体内将静态、实例和扩展方法的使用替换为一个选项来移除原始方法声明。

为什么: 这个重构提供了更清晰的语法。

操作指南:

  1. 将光标放在该方法的使用上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择内联 <限定方法名称> 以移除内联方法声明:

内联方法示例

选择 内联并保留 <QualifiedMethodName> 以保留原始方法声明:

内联和保持方法示例

内联临时变量

做什么: 让你可以移除一个临时变量,并用它的值来替换它。

何时: 使用临时变量使代码更难理解。

为什么: 移除临时变量可能会使代码更易阅读。

操作指南:

  1. 将光标放在要内联的临时变量中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 内联临时变量.

内联临时变量示例

为表达式引入局部变量

做什么: 让你立即生成一个局部变量来替换现有的表达式。

何时: 你有代码,如果将其放在局部变量中,以后可以轻松重用。

为什么: 你可以多次复制并粘贴代码以在不同位置使用,但是最好一次执行操作,将结果存储在局部变量中,并在整段代码中使用该局部变量。

操作指南:

  1. 将插入点放置在您希望分配给新局部变量的表达式上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择:

选择 引入局部 -> 为 <expression> 引入局部

引入局部变量作为表达式示例

选择 局部引入 -> 对所有 <expression> 的局部引入

引入参数

做什么: 让你立即生成一个新参数来替换现有的表达式。

何时: 你有代码,如果将其放在参数中,以后可以轻松重用。

为什么: 你可以多次复制并粘贴代码以在不同位置使用,但是最好一次进行操作,将结果存储在一个参数中,并在整过程中使用该参数。

操作指南:

  1. 将插入点放置在您希望分配给新参数的表达式上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择:

选择 为 <表达式> 引入参数 -> 并直接更新调用点

直接更新调用点示例

选择为提取的方法引入参数 <expression> ->

将参数引入提取的方法示例

选择在新的重载中为<expression> -> 引入参数

将参数引入新的重载示例

介绍使用声明

什么: 添加一个 使用语句/代码块到你的IDisposable实例。

何时: 你有一个 IDisposable确保实例被正确获取、使用和释放。

操作指南:

  1. 将插入点放置在您希望分配给新参数的表达式上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 介绍 使用 声明.

介绍  语句示例

反转条件表达式和逻辑运算

做什么: 可以反转条件表达式或条件\操作员。

何时: 你有一个条件表达式或条件\操作符如果反转会更容易理解。

为什么: 反转表达式或条件 \手动进行此操作可能需要更长时间,并且可能会引入错误。此代码修复帮助您自动完成此重构。

操作指南:

  1. 将光标放在条件表达式或条件中\操作员。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 反转条件替换 &&输入:||

反转条件示例

将 用 例子替换

反转如果

什么: 让你反转一个如果如果 否则声明不改变代码的含义。

何时: 当你有一个如果如果 否则当倒过来时会更易理解的陈述。

为什么: 倒置一个 如果如果 否则手写的语句可能需要更长时间并且可能会引入错误。此代码修复帮助您自动进行此重构。

操作指南:

  1. 将光标放在一个如果如果 否则声明。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 反转 如果输入:.

反转  示例

将成员静态化

做什么: 将成员静态化。

何时: 你希望一个非静态成员函数成为静态的。

为什么: 静态成员提高可读性:知道特定代码是隔离的,使得理解、重读和重用更加容易。

操作指南:

  1. 将光标放在成员名称上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 静态化.

使成员静态示例

将声明移近参考

做什么: 让你将变量声明移近其使用位置。

何时: 你有变量声明,可以限制在更窄的作用域中。

为什么: 你可以保持不变,但这可能会导致可读性问题或信息隐藏。这是一个改进可读性的重构机会。

操作指南:

  1. 将光标放在变量声明中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 将声明移近引用.

将声明移近参考示例

将类型移动到匹配文件

做什么: 将选定的类型移动到一个带有相同名称的单独文件中。

何时: 你在一个文件中有很多类、结构体、接口等,你想将它们分离。

为什么: 将多种类型放在同一个文件中可能会使查找这些类型变得困难。通过将类型移动到具有相同名称的文件中,代码变得更加可读且更容易导航。

操作指南:

  1. 将光标放在定义该类型的名称内。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 移动类型到 <typename>.cs.

将移动类型到匹配文件示例

反向 for 语句

什么: 让你反转一个对于声明。

何时使用: 当你想反转一个的含义时对于语句以及如何迭代。

为什么: 倒转一个 对于手写的语句可能需要更长时间并且可能会引入错误。此代码修复帮助您自动进行此重构。

操作指南:

  1. 将光标放在对于声明。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 反转 对于 声明.

反向语句示例

拆分或合并if语句

做什么: 分割或合并 如果声明。

何时: 你想分割一个 如果使用该语句的&&输入:||将运算符嵌套如果声明,或者合并一个如果声明具有外部如果声明。

为什么: 这是个人风格的偏好问题。

操作指南:

如果你想拆分如果声明:

  1. 将光标放在如果声明由&&输入:||操作员。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 拆分为嵌套 如果 陈述.

拆分为嵌套语句示例

如果你想要合并内部如果声明与外部如果声明:

  1. 将光标放在内侧如果关键词。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 与嵌套合并 如果 声明.

合并嵌套语句示例

使用明确的类型

做什么: 使用这个重构来替换变量在带有显式类型的局部变量声明中。

为什么: 为了提高代码的可读性或当你不想在声明时初始化变量时。

然而,var必须在变量用匿名类型初始化并在稍后访问对象的属性时使用。有关详细信息,请参阅隐式类型局部变量 (C#)

操作指南:

  1. 将插入点放在第变量关键词。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 使用显式类型代替 变量输入:.

使用明确的类型而不是示例

使用隐式类型

做什么: 使用此重构将局部变量声明中的显式类型替换为变量输入:.

原因: 为了符合您的个人编码规范,并减少显示的代码量。Var必须在变量用匿名类型初始化并在稍后访问对象的属性时使用。有关更多信息,请参阅隐式类型局部变量 (C#).

操作指南:

  1. 将插入点放在显式类型关键字上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择 使用隐式类型.

使用隐式类型示例

使用 lambda 表达式或块体

做什么: 可以将lambda表达式重构成使用表达式体或块体。

何时: 你更喜欢使用 lambda 表达式,无论是表达式体还是块体。

为什么: 根据您的用户偏好,可以将 Lambda 表达式重构以提高可读性。

操作指南:

  1. 将光标放置在lambda操作符的右侧。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择 使用块体 lamba 表达式.

使用块体用于 lambda 表达式示例

选择 对 lambda 表达式使用表达式体.

使用表达式体来表示 lambda 表达式

使用递归模式

做什么: 将代码块转换为使用递归模式。此重构适用于 switch 语句、属性模式匹配、元组模式匹配和位置模式匹配。

何时: 使用递归模式可以使您的代码更易读/更整洁。

操作指南:

  1. 将光标放在您希望转换为递归模式的表达式上。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择一个:

选择 转换 开关 语句到表达式.

将语句转换为表达式的示例

选择使用递归模式.

使用递归模式之前,例如

使用递归模式,如示例所示

包装、缩进和对齐重构

包装和对齐调用链

做什么: 让你可以包裹和对齐方法调用链。

何时: 你在一条语句中有一个由多个方法调用组成的长链。

为什么: 长列表更容易阅读,当它们根据用户偏好进行包裹或缩进。

操作指南:

  1. 将光标置于任何调用链中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择包装调用链包装并对齐调用链以接受重构。

包装和对齐调用链示例

包装、缩进、对齐参数或参数

做什么: 可以让你包裹、缩进和对齐参数或参数。

何时: 你有一个具有多个参数或实参的方法声明或调用。

为什么: 当参数或参数根据用户偏好进行包装或缩进时,阅读长长的参数或参数列表会更轻松。

操作指南:

  1. 将光标放在参数列表中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 从以下选项中选择:

选择 包装每个参数 -> 对齐包装的参数

对齐包装参数示例

选择包装每个参数 -> 缩进所有参数

缩进所有参数示例

选择包装每个参数 -> 缩进包装的参数

缩进包装参数示例

包装二进制表达式

做什么: 让你可以包裹二进制表达式。

何时: 你有一个二进制表达式。

为什么: 当二进制表达式被包装到用户偏好时,阅读更方便。

操作指南:

  1. 将光标放在二进制表达式中。
  2. ⌘. (Windows, Linux Ctrl+.)以触发 快速操作和重构 菜单。
  3. 选择包装表达式以接受重构。

包装表达式示例