Freigeben über


Feldentwurf

Hinweis

Diese Inhalte wurden mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines nachgedruckt: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. 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 einer der wichtigsten Begriffe im objektorientierten Entwurf. Dieses Prinzip gibt an, dass der Zugriff auf Daten, die in einem Objekt gespeichert sind, nur für dieses Objekt möglich sein sollte.

Eine gute Möglichkeit, das Prinzip zu interpretieren, ist festzulegen, dass ein Typ so entworfen werden sollte, dass Änderungen an Feldern dieses Typs (Namens- oder Typänderungen) vorgenommen werden können, ohne einen anderen Code als den für Member des Typs zu bearbeiten. Diese Interpretation beinhaltet direkt, dass alle Felder privat sein müssen.

Wir schließen konstante und statische schreibgeschützte Felder von dieser strikten Einschränkung aus, da solche Felder fast definitionsgemäß niemals 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 nie geändert werden, ohne dass die Kompatibilität gefährdet ist.

✔️ VERWENDEN Sie ö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 änderbaren Typen zu.

Ein änderbarer Typ ist ein Typ mit Instanzen, die geändert werden können, nachdem sie instanziiert wurden. Arrays, die meisten Sammlungen und Streams sind z. B. änderbare Typen, System.Int32, System.Uri und System.String sind allerdings 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 Genehmigung von Pearson Education, Inc aus 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 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen