CA1500与SA1309 - 哪一个获胜?

Jer*_*ose 20 c# code-analysis fxcop stylecop naming-conventions

我的前缀是说我理解Code Analysis和StyleCop都是指导原则,很多人选择忽略这些.但话说回来,我想看看这两条规则的普遍共识是什么.

规则CA1500表示不要使参数名称和私有字段名称相同.

另一方面,规则SA1309表示不要为成员添加下划线或"m_"作为前缀.

这使我们几乎没有选择区分私有支持字段与其相应的参数.拿这些例子.

SA1309抱怨:

class SomeClass
{
    int _someField;

    public SomeClass(int someField)
    {
        this._someField = someField;
    }
}
Run Code Online (Sandbox Code Playgroud)

CA1500抱怨:

class SomeClass
{
    int someField;

    public SomeClass(int someField)
    {
        this.someField = someField;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有什么选择?我不想创建私有支持字段PascalCase,因为这是公共字段/属性的(我相信相当普遍的)约定.而且我不想重命名其中一个,只是为了解决歧义.

所以我留下了上面两个中的一个,这将要求我压制其中一个SA/CA规则.

你们通常做什么?更重要的是,这些规则的作者认为你应该做些什么(因为它们都没有在他们的文档中提供替代解决方案)?

wom*_*omp 23

我们关掉了SA1309.背后的原因相当薄弱.

我们的团队认为,以下划线开头的私人会员的广泛接受的做法远远超过了某人可能在代码上使用不同编辑器的想法,这在我们的商店中从未发生过.至于提供"直接区分",下划线也是如此.

如果你真的让开发人员仍然使用"m_",你仍然需要检查它,你可以为此编写一个快速规则.