1

興味のある質問があります。プログラミングに関しては、どちらが優れているでしょうか。My Class を使用するClass membersか、内部から使用しますか? Getterたとえば、これは私のクラスです:

public class myClass
{
    private string _name;
    private int _length;
    private int _weight;

    public void doSomething(myClass obj)
    {

    }

    public void doSomething2(myClass obj)
    {

    }

    public string name
    {
        get { return _name; }
    }

    public int length
    {
        get { return _length; }
    }

    public int weight
    {
        get { return _weight; }
    }
}

この方法で doSomething を使用します。

public void doSomething(string str, myClass obj)
{
    string[] arr = str.Split(' ');
    arr[1] = obj._name;
    arr[2] = obj._length;
    arr[3] = obj._weight;
}

またはこの方法:

public void doSomething2(string str, myClass obj)
{
    string[] arr = str.Split(' ');
    arr[1] = obj.name;
    arr[2] = obj.length;
    arr[3] = obj.weight;
}
4

2 に答える 2

1

Getter変数に を指定する場合は、 を使用しますgetters。一貫性を保つためだけに。両方を同時に使用すると、混乱する可能性があります (あなたと他のプログラマーにとって)。

どこでもを使用gettersし、将来そのプロパティのコード検索を実行すると、それらすべてを見つけることができますが、時々 を使用するとprivate variable、一部を見逃してしまいます。

そして、この答え:クラス内のプロパティを介してプライベート変数にアクセスする必要がありますか?

于 2013-09-20T06:50:44.273 に答える
0

オデッドによる回答

  • 自動実装プロパティを使用する場合、選択の余地はありません。生成されたフィールドにアクセスできないため、プロパティを使用する必要があります。

  • プロパティが単純ではなく、追加の作業 (検証、イベントの発生など) を行う場合は、アクセスとロジックを一元化するためにプロパティを呼び出す必要があります。

  • 他のプロパティ (ロジックとバッキング フィールドのない単純なプロパティを意味する) がある場合、なぜそれらが上記のいずれでもないのかを尋ねます...

  • あなたが与えた例では、ほとんど違いはありません.これらの使用方法と一貫性を保つことがより重要であり、実際には個人の美学とコーディングスタイルに帰着します.

TheCodeJunkie による回答

  • プロパティを介してローカル (クラス スコープ) 変数にアクセスするための強力な議論の 1 つは、クラスに抽象化のレベルを追加することです。そのフィールドの保存方法に関するロジックを変更しても、コードの残りの部分は影響を受けません。

  • たとえば、ローカル変数から子オブジェクトのプロパティ、データベース呼び出し、Web サービス呼び出し、クラスの静的プロパティなどに変更できます。変更を行うと、単一の変更ポイントであるプロパティが提供されます。クラスの残りの部分はすべてプロパティを使用するため、更新する必要はありません。

  • また、プロパティを使用すると、フィールドに直接アクセスする場所ごとに同じルールを適用する代わりに、プロパティの値にビジネス ルールを適用できます。繰り返しますが、カプセル化

  • 自動プロパティの導入により、get/set でビジネス ルールを適用する必要がない限り、明示的にローカル変数を使用する理由がさらに少なくなります。

于 2013-09-20T06:55:32.253 に答える