我们采用了一种惯例,即在使用"非显而易见的"来调用C#函数时。参数,我们使用命名参数,即使它没有必要。
E.g。
obj.Process(save: true)
而不是
obj.Process(true)
虽然这是不必要的,但是当浏览代码以查看正在发生的事情时,它会变得更容易,特别是使用布尔值或幻数。
但是,resharper的代码清理有习惯删除这些。我还没有办法告诉它保留命名参数 - 有吗?
答案 0 :(得分:13)
虽然你可以通过@EricWalker所说的来实现它,但我想提出另一个选择。
您可以启动ReSharper选项,查找 Inspection Severity 然后转到 Redundant显式参数名称规范并将其更改为不显示。这样,您就不会失去删除冗余代码提供的所有其他良好清理(例如删除全名限定符)。
答案 1 :(得分:1)
您正在寻找的设置位于Code Cleanup \ C#\ Remove code redundancyancies
下我知道这可能不是您希望的答案,但您可以通过取消选中该设置来停止删除参数名称(同时留下所有其他冗余。)
您可以在代码清理中设置不同的配置文件来解决此问题,但是您可以更好地向JetBrains人员寻求解决方案。
HTH,
埃里克
答案 2 :(得分:1)
在ReSharper 2018.1中
有两个相关步骤。您可能会希望两者都做,但这取决于您要如何配置ReSharper。
首先,在Resharper -> Options -> Code Inspection -> Inspection Severity
中,禁用“对文字值使用首选参数样式”代码样式。 (对于布尔值,“ [..]代表文字值”是相关设置,尽管我选择禁用所有这些值。)
此设置还链接到ReSharper -> Options -> Code Editing -> Code Style -> Arguments
设置,因此现在应将其自动更改为“不显示”,而不是“提示”:
第二,由于“应用参数样式(命名与位置)”,无法使用默认的ReSharper代码清除配置文件-必须在代码清除配置文件中禁用此选项。
答案 3 :(得分:1)
要在方法调用中显示参数名称,请转到:
Resharper
⇨Options
⇨Code Editing
⇨C#
⇨Syntax Style
⇨Arguments
然后将所有下拉值设置为“命名参数”。
此外,选中“跳过单个参数” 以仅在有多个参数的情况下显示该方法的命名参数。
上述方法已在 Resharper 版本2020.2.4
答案 4 :(得分:0)
<强>更新强>
从v2017.1.3(2017-08-28)
开始,此解决方案似乎不再适用我目前正在使用ReSharper v2017.1(2017-06-01),看来JetBrains还没有解决这个问题。
正如@Colin Harkness所注意到的,目前是保留&#34;命名参数的最后手段&#34;是设置选项&#34;命名表达式(变量,属性,方法等)&#34; to&#34;命名参数&#34;。
这当然不是最好的出路。
<强>更新强>
我在JetBrains发现了一个小技巧&#39;论坛。 您可以通过在文件顶部添加此行代码来取消将命名参数视为冗余。
// ReSharper disable ArgumentsStyleNamedExpression
您必须在ReSharper设置中进行一些小配置。为了保持 // ReSharper禁用ArgumentsStyleNamedExpression 的自动添加,我已将此指令添加到文件头文本,如图所示。 2。
图2 - 添加ArgumentsStyleNamedExpression规则
之后,您必须检查代码清理配置中的 更新文件标题 选项,如图2所示。 3
在这种情况下,当代码清理开始时,它首先添加 ArgumentsStyleNamedExpression 规则,并将代码样式应用于文件。
添加此规则后,您可以转到 工具|选项|环境|字体和颜色| ReSharper参数标识符 并更改此案例的突出显示颜色,以便在视觉上区分 参数 和 参数名称 ,如图4所示。
图4 - 突出显示的参数名称
不幸的是,这种保持争论的方式&#39;名称并不总是有效(ReSharper可以有选择地保留/删除参数名称)。