【问题标题】:Should these arguments be added or removed?应该添加还是删除这些论点?
【发布时间】:2012-06-08 17:36:15
【问题描述】:

当 Resharper 与自己争论时,人们如何知道更信任哪个角色?

我想我发现了一些确实让 Resharper 感到困惑的代码(这显然是一个非常不寻常的案例 - 在使用了一天之后,我认为 Resharper 是蜜蜂的膝盖/自液化面包等以来最伟大的东西)。

有了这行代码:

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)。

不过,似乎任何一种方式都可以正常工作......

【问题讨论】:

  • Resharper 并没有告诉你任何一种方法都比另一种更好,它只是给你一个“灯泡操作”来帮助你做某事,如果你需要它。

标签: c# cryptography resharper optional-parameters named-parameters


【解决方案1】:

显式参数命名对于强制参数是可选的,因此两种形式都是“正确的”,问题是您更喜欢哪种形式?正如 vcsjones 所说,Resharper 只是为您提供一些重构选项以满足您的偏好。

【讨论】:

  • 既然如此,我认为他们会独自离开就足够了。如果在一个岔路口,一个旅行者带走了一个较少但几乎相等的人,另一个人会告诉他,“嘿,你不知道这是通往廷巴克图的路吗?” (向罗伯特·弗罗斯特(Robert Frost)和瑜伽士(Yogi)道歉,“如果你走到岔路口,就走吧”贝拉。
【解决方案2】:

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 中将其关闭。对于代码检查,弹出菜单本身提供了更改检查严重性的机会;或者您可以在ReSharper | Options | Code Isnpection | Inspection Severity 中查看所有这些。

我个人认为我从未使用过一些上下文操作(例如“转换为十六进制”),但我发现其他一些操作对于快速编码非常有用(?: 和 @ 之间切换的各种组合例如 987654329@ 和反相)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多