4

同じクラス (または基本クラス) の他のインスタンス メンバーを参照するインスタンス メンバー内のコードを読むと、混乱する場合があります。

public void MyMethod()
{
    Where = did + AllTheseWeirdThings(GetDeclared()); // ?
}

インスタンスメンバーはまだパブリックメンバーを参照できるため、「すべてのプライベート/保護されたメンバーの前に「_」を付ける」などのコーディング標準を持つことは役に立ちません。

これを読む方がはるかに良いでしょう:

public void MyMethod()
{
    this.Where = this.did + base.AllTheseWeirdThings(this.GetDeclared()); // ?
}

コンパイラ オプション、StyleCop、または同様のものを使用して、これを強制する方法はありますか?

4

2 に答える 2

6

ルールを強制するコンパイラ オプションはありません。

ただし、Google でざっと検索すると、この StyleCop ルールが表示されます: http://www.thewayithink.co.uk/stylecop/sa1101.htm

ReSharper にも同様のオプションがあります。

于 2010-08-14T18:15:34.923 に答える
4

C# では、this と base はオプションです。(このコンテキストで) それらを使用する必要があるのは、あいまいさがある場合だけです。この動作を変更するコンパイラ スイッチはありません。

また、StyleCop ルールを追加しないことをお勧めします。一般に、必要な場合にのみ this と base を使用することをお勧めします。たとえば、次のように作成するコンストラクターで:

this.foo = foo;

「this」および「base」キーワードの使用を強制しても、コードの品質が向上したり、読みやすくなったりすることはありません。コードが非常にわかりにくく、メンバーがどこで定義されているかがわからない場合は、コードをリファクタリングして、クラス階層を単純にすることをお勧めします。

于 2010-08-14T18:15:12.113 に答える