パラメータの使用方法のガイドライン
次の規則は、パラメータの使用方法のガイドラインを示しています。
パラメータ引数が有効であることを確認します。すべてのパブリック メソッドまたはプロテクト メソッドおよびプロパティの set アクセサについては引数の検証を実行します。パラメータ引数が無効の場合は、開発者に対してわかりやすい例外をスローします。System.ArgumentException クラスまたは System.ArgumentException の派生クラスを使用します。パラメータ引数が有効かどうかを確認し、わかりやすい例外をスローする例を次に示します。
Class SampleClass Private countValue As Integer Private maxValue As Integer = 100 Public Property Count() As Integer Get Return countValue End Get Set ' Check for valid parameter. If value < 0 Or value >= maxValue Then Throw New ArgumentOutOfRangeException("value", value, "Value is invalid.") End If countValue = value End Set End Property Public Sub SelectItem(start As Integer, [end] As Integer) ' Check for valid parameter. If start < 0 Then Throw New ArgumentOutOfRangeException("start", start, "Start is invalid.") End If ' Check for valid parameter. If [end] < start Then Throw New ArgumentOutOfRangeException("end", [end], "End is invalid.") End If ' Insert code to do other work here. Console.WriteLine("Starting at {0}", start) Console.WriteLine("Ending at {0}", [end]) End Sub End Class [C#] class SampleClass { public int Count { get { return count; } set { // Check for valid parameter. if (count < 0 || count >= MaxValue) throw newArgumentOutOfRangeException( Sys.GetString( "InvalidArgument","value",count.ToString())); } } public void Select(int start, int end) { // Check for valid parameter. if (start < 0) throw new ArgumentException( Sys.GetString("InvalidArgument","start",start.ToString())); // Check for valid parameter. if (end < start) throw new ArgumentException( Sys.GetString("InvalidArgument","end",end.ToString())); } }
実際の確認は、public メソッドまたは protected メソッド自体で実行する必要はありません。この確認は、プライベート ルーチンの低いレベルで実行できます。重要な点は、開発者に公開される領域全体について、引数が有効かどうかを確認することです。
パラメータの値渡しと参照渡しの意味を十分に理解していることを確認します。パラメータの値渡しでは渡される値がコピーされ、元の値はまったく影響を受けません。値渡しでパラメータを渡すメソッドの例を次に示します。
public void Add(object value){}
パラメータの参照渡しでは、値の格納位置が渡されます。結果として、パラメータの値に変更が加えられる可能性があります。参照渡しでパラメータを渡すメソッドの例を次に示します。
public static int Exchange(ref int location, int value){}
出力パラメータは、メソッドの呼び出しで引数として指定された変数と同じ格納位置を表します。結果として、出力パラメータの値だけに変更が加えられる可能性があります。パラメータを渡すメソッドの例を次に示します。
[DllImport("Kernel32.dll"] public static extern bool QueryPerformanceCounter(out long value)
参照
クラス ライブラリ開発者向けのデザイン ガイドライン | パラメータの名前付けのガイドライン | クラス メンバの使用方法のガイドライン