【发布时间】:2011-03-14 00:35:22
【问题描述】:
我先声明一下,我知道代码分析和 StyleCop 都是作为指导方针的,而且许多人还是选择忽略这些。不过话虽如此,我想看看关于这两条规则的普遍共识是什么。
Rule CA1500 表示不要让参数名称和私有字段名称相同。
另一方面,Rule SA1309 表示不要为成员添加下划线或“m_”前缀。
这使我们几乎没有选择将私有支持字段与其相应参数区分开来。举这些例子。
SA1309 抱怨:
class SomeClass
{
int _someField;
public SomeClass(int someField)
{
this._someField = someField;
}
}
CA1500 抱怨:
class SomeClass
{
int someField;
public SomeClass(int someField)
{
this.someField = someField;
}
}
我有什么选择?我不想创建私有支持字段 PascalCase,因为这是(我相信相当普遍的)公共字段/属性的约定。而且我不想重命名其中一个,只是为了解决歧义。
所以我只剩下上述两个中的一个,这需要我取消 SA/CA 规则之一。
你们通常做什么?更重要的是,这些规则的作者认为您应该怎么做(因为在他们的文档中都没有提供替代解决方案)?
【问题讨论】:
-
你的第一个例子不能编译,名字搞砸了:)
-
我通常违反 CA1500。但我只有 Pro,没有 TFS,所以我从来没有看到警告。 :)
-
我一直违反 CA1500,但到目前为止从未收到警告,尽管它启用了 CA1500。这条规则有什么神奇之处吗?
-
@Albic - 同样在这里,似乎我们刚刚开始收到警告。我们总是走第二个例子的路。我们最近确实从 FxCop 1.36 转到了 VS2010 中的代码分析,但我不认为这是一个新规则。我不确定。
-
更新了 SA1309 的链接:github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/…
标签: c# naming-conventions code-analysis fxcop stylecop