Freigeben über


Feldentwurf

Hinweis

Dieser Inhalt wird mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines: Konventionen, Idiome und Muster für wiederverwendbare .NET-Bibliotheken, 2. Auflage nachgedruckt. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.

Das Prinzip der Kapselung ist eines der wichtigsten Begriffe im objektorientierten Design. Dieser Grundsatz besagt, dass daten, die in einem Objekt gespeichert sind, nur für dieses Objekt zugänglich sein sollten.

Eine nützliche Möglichkeit, das Prinzip zu interpretieren, besteht darin zu sagen, dass ein Typ so gestaltet werden sollte, dass Änderungen an den Feldern dieses Typs (wie Namens- oder Typänderungen) durchgeführt werden können, ohne dass dabei Code außerhalb der Mitglieder dieses Typs verändert werden muss. Diese Auslegung impliziert sofort, dass alle Felder privat sein müssen.

Wir schließen konstante, statische und nur-lesende Felder von dieser strengen Einschränkung aus, weil solche Felder fast per Definition nicht geändert werden müssen.

❌ Stellen Sie KEINE Instanzfelder bereit, die öffentlich oder geschützt sind.

Sie sollten Eigenschaften für den Zugriff auf Felder bereitstellen, anstatt sie öffentlich oder geschützt zu machen.

✔️ VERWENDEN Sie konstante Felder für Konstanten, die sich nie ändern.

Der Compiler verarbeitet die Werte konstanter Felder direkt im aufrufenden Code. Daher können konstante Werte niemals ohne das Risiko einer Inkompatibilität geändert werden.

✔️ DO verwenden öffentliche statische readonly Felder für vordefinierte Objektinstanzen.

Wenn vordefinierte Instanzen des Typs vorhanden sind, deklarieren Sie sie als öffentliche schreibgeschützte statische Felder des Typs selbst.

❌ Weisen Sie readonly-Feldern KEINE Instanzen von veränderbaren Typen zu.

Ein veränderbarer Typ ist ein Typ mit Instanzen, die nach der Instanziierung geändert werden können. Arrays, die meisten Sammlungen und Datenströme sind beispielsweise veränderbare Typen, aber System.Int32, System.Uriund System.String alle sind unveränderlich. Der schreibgeschützte Modifizierer in einem Verweistypfeld verhindert, dass die im Feld gespeicherte Instanz ersetzt wird, jedoch nicht, dass die Instanzdaten des Felds durch Aufrufen von Membern, die die Instanz ändern, geändert werden.

© Teile 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit freundlicher Genehmigung von Pearson Education, Inc., aus dem Buch Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 von Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Siehe auch