当Resharper与自己辩论时,如何知道哪个角色更可信?
我想我发现一些代码确实让Resharper感到困惑(这显然是一个非常不寻常的案例 - 使用它一天之后,我认为Resharper是蜜蜂的膝盖/自液化面包以来最棒的东西等。) / p>
使用以下代码:
ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(SecretKey.GetBytes(32), SecretKey.GetBytes(16));
Resharper告诉我“添加参数名称'rgbkey'”然后“添加参数名称'rgbIV'”
那么这一行就是:
ICryptoTransform Encryptor = RijndaelCipher.CreateEncryptor(rgbKey: SecretKey.GetBytes(32), rgbIV: SecretKey.GetBytes(16));
当我再次运行Resharper时,它说,
“冗余参数名称规范” - “删除参数名称规范”(rgbkey)(然后是rgbIV)。
似乎两种方式都可行,但是......
答案 0 :(得分:6)
显式参数命名在强制参数上是可选的,因此两种形式都是“正确的”,问题是您更喜欢哪种?就像vcsjones所说,Resharper只是给你一些重构选项以满足你的喜好。
答案 1 :(得分:6)
Resharper告诉我
实际上,它没有。 (广义上)R#向用户传达了两类:它认为用户应该做的事情,以及用户可能希望做的事情,它是可以更快地完成。
第一个例子:
var i = 4;
i = 5;
DoSomething(i);
4
的分配将产生“未使用分配”检查,左边距有灯泡图标,提供快速修复操作修复它(删除作业)。
第二个例子:
if ((new Random()).Next() > 5)
{
DoSomething();
}
else
{
DoSomethingElse();
}
将光标定位在if
上会在左边距中生成铅笔图标,提供上下文操作以反转if
。它不是说你应该 - 它说,“嘿,如果你想这样做,只需选择这个菜单项,我会为你做的。”
添加参数名称属于第二类,即上下文操作。如果您不想提供它,可以在ReSharper | Options | Code Editing | C# | Context Actions
中将其关闭。对于Code Inspections,弹出菜单本身提供了更改检查严重性的机会;或者你可以在ReSharper | Options | Code Isnpection | Inspection Severity
中查看所有这些内容。
就个人而言,我认为我曾经使用过某些上下文操作(例如“转换为十六进制”),但还有其他一些我发现快速编码非常宝贵(?:
之间切换的各种组合和if
并反转,例如)