次の方法で共有


フィールドの使用方法のガイドライン

次の規則は、フィールドの使用方法のガイドラインを示しています。

  • public または protected (Visual Basic の場合は Public または Protected) のインスタンス フィールドは使用しないでください。フィールドはバイナリ互換性を維持したままプロパティに変更することはできないため、開発者にフィールドを直接公開しないようにすることによって、クラスをより簡単にバージョン管理できるようになります。フィールドをパブリックにするのではなく、フィールドの get プロパティ アクセサおよび set プロパティ アクセサを提供するようにしてください。get プロパティ アクセサおよび set プロパティ アクセサに実行可能なコードを含めておくと、必要に応じて適時にオブジェクトを作成できるようにするなど、プロパティの使用方法や変更通知に関して後から機能を拡張できます。プライベート インスタンス フィールドを get プロパティ アクセサおよび set プロパティ アクセサと共に適切に使用したコード例を次に示します。

    Public Structure Point
       Private xValue As Integer
       Private yValue As Integer
    
       Public Sub New(x As Integer, y As Integer)
          Me.xValue = x
          Me.yValue = y
       End Sub 
    
       Public Property X() As Integer
          Get
             Return xValue
          End Get
          Set
             xValue = value
          End Set
       End Property
       Public Property Y() As Integer
          Get
             Return yValue
          End Get
          Set
             yValue = value
          End Set
       End Property
    End Structure 
    [C#]
    public struct Point
    {
       private int xValue;
       private int yValue;
    
       public Point(int x, int y)
       {
          this.xValue = x;
          this.yValue = y;
       }
    
       public int X
       {
          get
          {
             return xValue; 
          }
          set
          { 
             xValue = value; 
          }
       }
       public int Y
       {
          get
          { 
             return yValue; 
          }
          set
          { 
             yValue = value; 
          }
       }
    }
    
  • フィールドを派生クラスに公開するには、フィールドの値を返す protected プロパティを使用します。この方法を次のコード例に示します。

    Public Class Control
          Inherits Component
          Private handle As Integer
    
          Protected ReadOnly Property Handle() As Integer
             Get
                Return handle
             End Get
          End Property
       End Class 
    [C#]
    public class Control: Component
    {
       private int handle;
       protected int Handle
       {
          get
          { 
             return handle; 
          }
       }
    }
    
  • 変更のない定数フィールドを宣言するには、const (Visual Basic では Const) キーワードを使用します。言語コンパイラは、const フィールドの値を呼び出しコードに直接格納します。

  • 定義済みオブジェクト インスタンスには読み取り専用のパブリック静的フィールドを使用します。オブジェクトの定義済みインスタンスがある場合は、そのオブジェクト自体の読み取り専用のパブリック静的フィールドとして宣言します。フィールドはパブリックにするため、Pascal 形式を使用します。読み取り専用のパブリック静的フィールドの適切な使用方法を次の例に示します。

    Public Structure Color
       Public Shared Red As New Color(&HFF)
       Public Shared Green As New Color(&HFF00)
       Public Shared Blue As New Color(&HFF0000)
       Public Shared Black As New Color(&H0)
       Public Shared White As New Color(&HFFFFFF)   
    
       Public Sub New(rgb As Integer)
       ' Insert code here.
       End Sub 
    
       Public Sub New(r As Byte, g As Byte, b As Byte)
          ' Insert code here.
       End Sub    
    
       Public ReadOnly Property RedValue() As Byte
          Get
             Return Color
          End Get
       End Property   
    
       Public ReadOnly Property GreenValue() As Byte
          Get
             Return Color
          End Get
       End Property
    
       Public ReadOnly Property BlueValue() As Byte
          Get
             Return Color
          End Get
       End Property
    End Structure 
    [C#]
    public struct Color
    {
       public static readonly Color Red = new Color(0x0000FF);
       public static readonly Color Green = new Color(0x00FF00);
       public static readonly Color Blue = new Color(0xFF0000);
       public static readonly Color Black = new Color(0x000000);
       public static readonly Color White = new Color(0xFFFFFF);
    
       public Color(int rgb)
       { // Insert code here.}
       public Color(byte r, byte g, byte b)
       { // Insert code here.}
    
       public byte RedValue 
       { 
          get
          {
             return Color;
          }
       }
       public byte GreenValue 
       { 
          get
          {
             return Color;
          }
       }
       public byte BlueValue
       { 
          get
          {
             return Color;
          }
       }
    }
    
  • フィールド名に使用する単語はすべて省略せずに記述します。省略形を使用するのは、その省略形が開発者に一般的に浸透している場合に限ります。フィールド名には大文字は使用しないでください。適切なフィールド名の例を次に示します。

    Class SampleClass
       Private url As String
       Private destinationUrl As String
    End Class
    [C#]
    class SampleClass 
    {
       string url;
       string destinationUrl;
    }
    
  • フィールド名にはハンガリー表記法は使用しないでください。型ではなく、その意味を説明する名前を使用するようにします。

  • フィールド名または静的フィールド名にプリフィックスは適用しません。特に、フィールド名に、静的フィールドと非静的フィールドを区別するためのプリフィックスは適用しないでください。たとえば、プリフィックス g_ または s_ を使用するのは適切ではありません。

参照

クラス ライブラリ開発者向けのデザイン ガイドライン | クラス メンバの使用方法のガイドライン | 静的フィールドの名前付けのガイドライン