コード分析とStyleCopの両方がガイドラインとして意図されており、多くの人がとにかくこれらを無視することを選択したことを理解していることを前に付けます。しかし、そうは言っても、これら2つのルールに関する一般的なコンセンサスが何であるかを確認したいと思います。
ルールCA1500では、パラメータ名とプライベートフィールド名を同じにしないでください。
一方、ルール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にしたくありません。これは、パブリックフィールド/プロパティの(かなり普遍的な)規則だからです。そして、あいまいさを解決するためだけに、どちらか一方の名前を変更したくありません。
したがって、上記の2つのうちのいずれかが残っているため、SA/CAルールの1つを抑制する必要があります。
あなたたちは通常何をしますか?さらに重要なことに、これらのルールの作成者は、あなたが何をすべきだと考えていますか(どちらもドキュメントに代替ソリューションを提供していないため)?