如何处理ReSharper的命名建议?

6

我一直收到以下信息:

名称“byteProivder_LengthChanged”与“方法、属性和事件”不匹配。建议更改为“ByteProviderLengthChanged”

即使是VS生成的方法名也不能逃脱这个建议。例如,FormXXX_Load建议更改为FormXXXLoad

那么我该怎么办?应该遵循名称建议还是保持VS风格? 如果我遵循名称建议,如何配置ReSharper并让它自动更改名称? 如果我不遵循ReSharper的方式,如何关闭此名称建议选项?

10个回答

5

要关闭建议功能,您可以更改ReSharper的检查严重程度。

ReSharper > 选项 > 代码检查 > 检查严重程度 > 命名不一致

您还可以更改或创建单个语言的自定义命名样式。

ReSharper > 选项 > C# > 命名样式 > 高级设置

有关创建自定义命名样式的更多信息,请参见JetBrains'devloq


4

有一个简单的方法可以禁用ReSharper对整个文件/类的不一致命名评估检查。

通过在文件/类的顶部添加以下注释,ReSharper在分析文件/类时将不会评估命名约定。

// ReSharper disable InconsistentNaming 

对于代码片段,您可以:

// ReSharper disable InconsistentNaming
private void btnCreate_Click(object sender, RoutedEventArgs e)
// ReSharper restore InconsistentNaming
{
    //.....
}

ReSharper 提供的建议注释列表:

// ReSharper disable InconsistentNaming
// ReSharper restore InconsistentNaming

// ReSharper disable CodeCleanup
// ReSharper restore CodeCleanup

1
哎呀...这太丑了。 - Ish Thomas

3

个人而言,我会忽略那些警告,然后它就不再提示。

如果你进入ReSharper,然后在代码检查菜单中选择检查严重程度,你可以将其关闭。


这是最佳选择 - 命名指南毫无意义且令人讨厌地限制了。这样的指南是很好的建议,但当你选择偏离它们时(可能出于可读性原因),并不值得受到骚扰。 - Eamon Nerbonne

3
ReSharper的建议(在大多数情况下)很有用,但有时会偏离目标甚至让人有点烦恼。
你有三种解决方案:
1. 编辑ReSharper的定义以符合你的喜好(可以通过从左侧的快速修复菜单中选择“编辑X规则设置”来实现); 2. 隐藏令人讨厌的ReSharper消息(可以通过在本地使用注释或更改此类消息的设置来全局隐藏。两者都可以从快速修复菜单中实现); 3. 当ReSharper的消息是无用的时候,请忽略它。
无论你选择哪种方法,都要确保你的选择包括你的整个工作(如果你是团队的一部分,还要包括你的团队工作)。例如,在选项3的情况下,请列出忽略ReSharper的情况的清单。
保持你的代码一致对于任何项目(无论大小)都是至关重要的,这应该是你考虑ReSharper时的第一个准则。

2
我不同意。名称旨在代表某些有意义的内容,不能实际上被缩减成(准确的)全局指南。例如,当VS添加 _Load 时,它是一致的,并因此可识别可读性,无论是否明确规定。同样,任何合理的大型项目 应该 有各种增强可读性的约定 - 这些约定取决于项目,几乎肯定不适合一个有用的全局指南中。 - Eamon Nerbonne
4
机器验证此类命名指南是需要付出代价的,务必不要忘记。这些警告会分散你在代码中真正需要关注的问题,需要花费时间和注意力去解决。偶尔改进名称以澄清代码是个好主意,但默认情况下用警告和波浪线来混淆代码是个坏主意。 - Eamon Nerbonne
@Eamon,全球指南总是会局限于特定项目,因此目标不是将所有项目都适应一种规范(如果这样的话,您会看到许多关于此问题的标准)。此外,如您所说,名称旨在代表某些有意义的东西,但命名惯例并非关于名称,而是关于您展示它的方式,因此,我再次不认为全球指南应该涵盖此部分。 - Neowizard
@Eamon,关于你的第二条留言,+1。 - Neowizard
是的,我有点夸张了;确实 :-) 我当然不反对一致的命名 - 只是resharper默认实现这种一致性的方式。 - Eamon Nerbonne

2

我不会完全遵循所有的r#建议。我会修改我不喜欢的建议,对于无法更改的建议,我会将其关闭(我们有自己的指导方针)。


1
您可以通过在带有警告的行之前添加以下注释来抑制单个警告实例,例如对于以下警告:

名称“Counter”与规则“本地函数”不匹配。建议使用名称“counter”。

像这样禁用:
// ReSharper disable once InconsistentNaming
function Counter() {
    this.pending = 0;
    this.succeeded = 0;
    this.failed = 0;
}

1

你也可以使用ReSharper的StyleCop,定义自己的规则或修改默认行为以符合你的风格。


0

ReSharper试图让您遵循微软自己的命名指南,这是一个好主意,特别是如果您的团队尚未使用任何命名约定。使用命名约定可以使您的代码更易读,并提供更一致的API。


命名规范是一回事,显式规范又是另一回事;而机器验证一个可能与您项目实际不符的规范则又是不同的。 - Eamon Nerbonne
2
在我看来,你定义了自己项目的现实。 - Klaus Byskov Pedersen
我的问题不是关于ReSharper的命名规范。我喜欢遵循命名规范。我稍微编辑了一下,现在看起来非常好。但是还有500个其他的检查,它们真的非常烦人。更烦人的是,我必须手动取消勾选Inspection Severity中的500个复选框,一个一个地取消。因为如果我不这样做,每个项目就会有500个建议。而且如果项目很小,那就更多了。 - KulaGGin

0

如果你想关闭某些代码检查,我认为最简单的方法是从编辑器右侧显示的菜单中选择“检查选项...”(针对特定的错误/警告)。然后会弹出一个窗口,您可以更改该类型检查的行为。最后一个选项:“不显示”就可以解决问题。

这适用于R# 5.0和可能也适用于4x。

一般来说,您应该使用符合您需求的编码标准。


0

如果您在查找 ReSharper 设置时遇到问题,这里是截图:

单击 Resharper 菜单 -> 选项:

Inconsistent Naming Options


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接