6

プライベートフィールド/プロパティに関してキーワードまたはアンダースコアを使用することについて議論/意見があることを知っていthisます(そして、私は.NET 2.0で立ち往生しています)

個人的には の方が好みthisですが、静的メソッド内からグローバル変数を参照する必要がある場合など、使用できない場合があります。その場合、アンダースコアを使用する必要があります (2 つの選択肢しかないと仮定すると、thisアンダースコア)。これは、クラスがドキュメント全体で使用できない静的メソッドを使用している場合を意味thisします。

今、私は命名ガイドラインを読み、 StyleCopを使用しました。どちらもアンダースコアを使用したくないのですが、Resharper は _.

thisクラスが非静的メソッドと静的メソッドを混在させる場合に対応するために、あるクラスで _ を使用し、次のクラスで単純に使用するのは正しくないと思います。SOに関するここでのアドバイスは、1つの実装/スタイルを維持することですが、それがMicrosoftを無視する必要があることを意味するかどうかはわかりません(そして、MSが常に独自のルールに従うとは限りません)!

ハンガリー語に似ていますが、glob がグローバルであることを示す globVariableName を接頭辞として付けることが提案されています。私はこのアイデアが嫌いです。オーダーメイドすぎて、私のチーム以外の他の開発者には明らかではありません。

それで、私の質問は、グローバル変数を一貫して定義するための最良の方法は何ですか? それらは命名ガイドであるため、無視することができます (少なくとも _ は一貫して使用できますが、言語作成者からのアドバイスを無視するのは間違っていると感じます)。

4

4 に答える 4

2

静的クラスで「this」を使用するのと同じ方法でクラス名を使用するだけです。例は次のとおりです。

public static class MyStatic
{
    public static object Global;

    public static void SomeMethod()
    {
        var theGlobal = MyStatic.Global;
    }
}

public class MyNonStatic
{
    public object Global;

    public void SomeMethod()
    {
        var theGlobal = this.Global;
    }
}

注:私は実際にそれを行う他の方法を考えることはできません。

于 2013-01-25T12:20:00.533 に答える
1

グローバル変数によって、constまたはstaticフィールドを意味すると仮定します

StyleCop は、以前はClassName.staticFieldforフィールドstaticconstフィールドの使用を奨励していましたが、少なくともデフォルトでは、そのルールを削除したようです。それはまだそれを行うための良い方法です。

また、Resharper を StyleCop とうまく連携するように構成することもできます。

于 2013-01-25T12:19:05.247 に答える
0

これは私の個人的な意見です。

  • thisすべてのプライベート変数に使用すると非常に便利だと思います。コードの可読性にプラスの効果があります。また、DIコンストラクターのインジェクションメソッドを使用している場合は、混乱することなく同じ変数を使用できます。これは非常に適切なようです。

    public void SomeMethod(int someVariable)
    {
        this.someVariable = someVariable;
    }
    
  • this私はアンダースコアの代わりに好みます。アンダースコアは一見きれいに見えます。ただし、前の例を参照すると、読みやすさに悪影響があります。

  • クラス変数に名前を付けるのと同じ方法で静的変数に名前を付けます。キーワードを使用するとthis、プライベート変数と静的変数が混同されるリスクが低くなります。

于 2013-01-25T12:23:37.003 に答える
0

静的変数とインスタンス変数の両方に常にアンダースコアを使用します。

たとえば、私が使用する変数this.variable

変数 i の場合static、クラスの名前をプレフィックスとして付けることがあります。ClassName.variable

于 2013-01-25T12:26:40.977 に答える