Разработка полейField Design

Принцип инкапсуляции является одним из наиболее важных концепций объектно-ориентированного проектирования.The principle of encapsulation is one of the most important notions in object-oriented design. Этот принцип указывает, что данные, хранящиеся внутри объекта, должны быть доступны только для этого объекта.This principle states that data stored inside an object should be accessible only to that object.

Чтобы интерпретировать принцип, можно сказать, что тип должен быть спроектирован таким образом, чтобы изменения полей этого типа (изменения имени или типа) могли выполняться без нарушения кода, отличного от элементов типа.A useful way to interpret the principle is to say that a type should be designed so that changes to fields of that type (name or type changes) can be made without breaking code other than for members of the type. Такая интерпретация немедленно подразумевает, что все поля должны быть частными.This interpretation immediately implies that all fields must be private.

Мы исключены постоянные и статические поля только для чтения из этого ограниченного ограничения, так как такие поля почти по определению не требуют изменения.We exclude constant and static read-only fields from this strict restriction, because such fields, almost by definition, are never required to change.

❌ не предоставляют открытые или защищенные поля экземпляров.❌ DO NOT provide instance fields that are public or protected.

Необходимо предоставить свойства для доступа к полям, не делая их открытыми или защищенными.You should provide properties for accessing fields instead of making them public or protected.

✔️ использовать константные поля для констант, которые никогда не изменятся.✔️ DO use constant fields for constants that will never change.

Компилятор записывает значения полей const непосредственно в вызывающий код.The compiler burns the values of const fields directly into calling code. Поэтому константные значения не могут быть изменены без риска нарушения совместимости.Therefore, const values can never be changed without the risk of breaking compatibility.

✔️ использовать открытые статические поля readonly для предопределенных экземпляров объектов.✔️ DO use public static readonly fields for predefined object instances.

Если имеются предопределенные экземпляры типа, объявите их как открытые статические поля только для чтения самого типа.If there are predefined instances of the type, declare them as public read-only static fields of the type itself.

❌ не присваивать экземпляры изменяемых типов readonly полям.❌ DO NOT assign instances of mutable types to readonly fields.

Изменяемый тип — это тип с экземплярами, которые могут быть изменены после создания экземпляра.A mutable type is a type with instances that can be modified after they are instantiated. Например, массивы, большинство коллекций и потоков являются изменяемыми типами, но System.Int32, System.Uriи System.String являются неизменяемыми.For example, arrays, most collections, and streams are mutable types, but System.Int32, System.Uri, and System.String are all immutable. Модификатор только для чтения в поле ссылочный тип предотвращает замену экземпляра, хранящегося в поле, но не предотвращает изменение данных экземпляра поля путем вызова членов, изменяющих экземпляр.The read-only modifier on a reference type field prevents the instance stored in the field from being replaced, but it does not prevent the field’s instance data from being modified by calling members changing the instance.

Части © 2005, 2009 Корпорация Майкрософт. Все права защищены.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

Перепечатано с разрешения Pearson Education, Inc. из книги Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (2-е издание), авторы: Кржиштоф Цвалина (Krzysztof Cwalina) и Брэд Абрамс (Brad Abrams). Книга опубликована 22 октября 2008 г. издательством Addison-Wesley Professional в рамках серии, посвященной разработке для Microsoft Windows.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

См. также разделSee also