次の方法で共有


フィールドデザイン

このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。

カプセル化の原則は、オブジェクト指向設計における最も重要な概念の 1 つです。 この原則では、オブジェクト内に格納されているデータには、そのオブジェクトにのみアクセスできるようにする必要があることを示します。

この原則を解釈する便利な方法は、型のメンバー以外のコードを中断することなく、その型のフィールド (名前または型の変更) を変更できるように型を設計する必要があると言うことです。 この解釈は、すべてのフィールドをプライベートにする必要があることをすぐに意味します。

この厳密な制限から定数フィールドと静的読み取り専用フィールドを除外します。これは、ほぼ定義上、変更する必要がないためです。

❌ パブリックまたは保護されているインスタンス フィールドは指定しないでください。

フィールドをパブリックまたは保護するのではなく、フィールドにアクセスするためのプロパティを指定する必要があります。

✔️ 変更されない定数には定数フィールドを使用してください。

コンパイラは、const フィールドの値を呼び出し元のコードに直接書き込みます。 したがって、互換性を損なうことなく const 値を変更することはできません。

✔️ 定義済みのオブジェクト インスタンスに対してパブリック静的 readonly フィールドを使用します。

型の定義済みインスタンスがある場合は、型自体のパブリック読み取り専用静的フィールドとして宣言します。

❌ 変更可能な型のインスタンスを readonly フィールドに割り当てないでください。

変更可能な型は、インスタンスがインスタンス化された後に変更できるインスタンスを持つ型です。 たとえば、配列、ほとんどのコレクション、ストリームは変更可能な型ですが、 System.Int32System.UriSystem.String はすべて変更できません。 参照型フィールドの読み取り専用修飾子は、フィールドに格納されているインスタンスが置き換えられるのを防ぎますが、インスタンスを変更するメンバーを呼び出すことによって、フィールドのインスタンス データが変更されるのを防ぐことはありません。

Portions © 2005, 2009 Microsoft Corporation. 無断転載を禁じます。

フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。

こちらも参照ください