Frage

Public Class FooBar
{
    private int _foo;

    public int Foo { 
        get { return _foo; }
        set { _foo = value; }
    }

    public void DoStuff()
    {
        _foo++; // Do this?
        Foo++; // Or this?
    }
}

Gibt es eine akzeptierte Praxis entweder Zugang Felder oder Eigenschaften in einer Klasse (falls vorhanden)? Ich habe die Gewohnheit, das Feld der Zugriff immer gewesen, aber da ich WPF getan, die eine Menge von INotifyPropertyChanged hat, habe ich fand mich auf die Eigenschaft zugreifen zu müssen die Benachrichtigung geändert werden. So, jetzt habe ich eine Mischung von sowohl Feld und Eigentum Zugriffe während meiner Klassen und, während sie von einem Compiler Point-of-View spielt es keine Rolle, stilistisch und Lesbarkeit, es fühlt sich ... peinlich.

War es hilfreich?

Lösung

Es gibt sicherlich Fälle, dass die Eigenschaft Zugriff auf keinen Sinn macht (zum Beispiel, wenn Sie die Eigenschaft wurden die Umsetzung selbst). die Fälle beiseite zu legen, würde ich mit Eigentum Stil standardmäßig gehen (es sei denn ich einen bestimmten Grund nicht zu haben). Zugriff auf das Feld durch die Eigenschaft werden alle Änderungen in einer einzigen Codepfad lenken die Umsetzung machen zu ändern und einfacher debuggen und kann weniger fehleranfällig ist.

Andere Tipps

Eine Menge davon kommt auf dem persönlichen Stil. Es gibt keine 100% richtige oder falsche Antwort hier.

Meine Präferenz ist durch die Eigenschaft jedes Mal für ein paar Gründe gehen

  • Bildet das Debuggen einfacher, da Sie auf Eigentum Zugang zu brechen und sehen Sie alle bekommen / set des Wertes. Nicht möglich mit einem Feld
  • Konsistenz: In einigen Fällen, wie Auto-Eigenschaften, es ist nicht möglich, direkt auf das dahinter liegendes Feld zu gehen. Geht man durch die Eigenschaft zeigt jedes Mal der gleiche Code den gleichen Wert zugreifen.
  • Performance: Einfache Objekte sind wahrscheinlich durch die JIT inlined so das Performance-Problem in der Regel ein Mute-Punkt ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top