如何处理冲突的编码约定

本文关键字:冲突 编码 约定 处理 何处理 | 更新日期: 2023-09-27 17:58:24

通常,我们使用各种静态代码分析工具来分析代码以进行验证。但我看到了一些相互矛盾的场景。

例如,如果我们使用类变量,StyleCop将建议我们使用

this.Name = myName

而不是

Name = myName

但这将弹出一个Resharper错误,"冗余限定符",并建议不要使用"this."表示法。

因此,在这种情况下,我需要检查一个更一致的参考,以选择什么是正确的/最佳的。有没有这样的资源可以"定义"正确的约定?

如何处理冲突的编码约定

没有正确的约定,你可以采用你喜欢的约定,那就是你的基线/参考。

如果您同时使用ReSharper和StyleCop,您应该将它们设置为一起工作,这意味着以相同的方式接受和验证代码。

这是一个主观问题,所以我的主观答案是:我同意Resharper的观点,认为this是多余的。就我个人而言,我在字段名称前面加下划线:

public class Foo
{
    private readonly string _name;
    public Foo(string name)
    {
        _name = name;
    }
}

然后我配置静态分析工具以遵守我使用的约定。

不同的工具提供不同的建议。我建议你制作自己的编码指南文档,并与你的团队分享(一定要从现有的编码惯例开始)。然而,一个好的起点是《框架设计指南》一书,ISBN:978-0321545619

你也可以配置重新处理程序来提供你想要的警告/错误,并让所有团队成员使用相同的重新处理程序配置,这样他们就会得到相同的错误/警告。

不要只做编码准则想要的一切,根据情况,有时最好不要坚持下去,但如果你不遵循准则,一定要说明原因。

无论如何,它们更像是精明的指导方针;)。

我认为使用FxCop更有用,因为它是由微软提供的,所以它可以比微软更真实。http://msdn.microsoft.com/en-us/library/bb429476(v=vs.80).aspx

我需要检查一个更一致的参考,以选择什么是正确的/最好的。有没有这样的资源可以"定义"正确的约定?

这些问题无法回答。参考文献不能帮助你"选择正确的内容"。约定本质上不具有"正确性"属性——我们使用约定来任意决定对那些没有正确答案的问题采取一致的方法。

如果你想遵循StyleCop的指导原则,你可以配置ReSharper来停止抱怨this的使用。这是在ReSharper | Options | Code Inspection | Inspection Severity中——或者,我相信,有一个特定的"StyleCop for ReSharper"插件可以为您处理这个问题。