web-dev-qa-db-ja.com

関数と同じ出力変数に名前を付けるにはどうすればよいですか?

変数の名前を関数の名前と同じにする必要がある場合の変数の命名規則には、どのようなものがありますか? VB.Netを使用しています。

いくつかの数学演算を実行するか、オブジェクトを生成する関数を作成するときに、私はこの問題によく遭遇します。戻り変数は関数内で宣言され、その変数の値は関数全体で設定されます。

例として:

Public Function Sum(arrayOfValues as double()) as double()
   dim outputSum as double(arrayOfValues.GetUpperBound(0))
   For i As Integer = 0 To arrayOfValues .GetUpperBound(0)
            outputSum += v(i)
        Next
   Return outputSum 
End Function

ここでは、outputSumを単に「sum」と呼ぶことはできません。 VB.Netは大文字と小文字を区別しないため、名前はメソッドの名前と競合します。

次に別の例を示します。

    Public Function IsValid(data As List(Of MyObj)) As Boolean
        Dim retVal As Boolean = True
        For Each d As MyObj In data
            If d.SomeProperty > 42 Then
                retVal = False
            End If
        Next
        Return retVal
    End Function

わかりやすい名前を使用できますが、不要なノイズは追加されませんか?これまでは「出力」だけを使用しましたが、戻り値の型がプリミティブ型の場合は「retVal」を使用することもありました。

*多くのプログラマーがコンパイラーを回避するために任意の省略形( "MaximumValue"や "maxVal"など)を使用することも確認しました。これは私を狂わせます。

1

ほとんどの場合、変数resultを使用します。

あなたのソースコードの次の穏やかな読者の心に曖昧さを作らないでください。 (あなたにとってはあまりにも悪いので、あなたはパン屋のトラックに気を取られたので、彼女は明確にするように頼むことはできません。)「一目でわかる」ソースコードを書いてみてください。それを読むのは急いでいてプレッシャーがあります。彼らに親切にしてみてください...

3
Mike Robinson

VBは.NETファミリーの特別な子です。だから私は以前にこの痛みを感じました。

まず第一に、良い経験則は、動詞にちなんでメソッドに名前を付け、変数/オブジェクトに名詞にちなんで名前を付けることです。これにより、しばしば競合が解決されます。

ただし、そうでない場合は、メソッド内の結果オブジェクトにアンダースコアと小文字の組み合わせを使用します。

Public Function Sum(arrayOfValues As Double()) As Double()
    Dim _sum As Double(arrayOfValues.GetUpperBound(0))
    For i As Integer = 0 To arrayOfValues.GetUpperBound(0)
        _sum += v(i)
    Next
    Return _sum
End Function
0
Graham

この2つの方法で賢く行くことができます。

1つは、「ret」や「out」などの一貫した接頭辞を使用することです。つまり、変数「out_sum」を呼び出します。この命名システムを出力パラメーターにも適用します。

もう1つは、問題の変数に別の名前を付けることです。たとえば、「アキュムレータ」または「cuml_sum」に短縮できます。これは、計算プロセスで使用される中間変数としての役割に適しています。

VB6とVBAで利用可能な3番目の代替案(これらの言語が実際に戻り値を割り当てる方法のため)ですが、VB.Netに引き継がれたかどうかを忘れてしまいました-関数名自体をアキュムレーター変数として使用することです。

0
Steve