1

内部に out パラメーターを持つメソッドに名前を付ける一般的な設定は何ですか?

通常、Get をプレフィックスとして使用して、メソッドが値を返すことを示します (GetMyBusiness など)。

しかし、メソッド呼び出しの後に設定される out パラメータがある場合はどうなるでしょうか? メソッド名はこれに言及し、戻り値のみに焦点を当てる必要がありますか?

ありがとう!

4

5 に答える 5

1

メソッド名は、メソッドの機能(自己文書化コード)を説明する必要があります。メソッドのシグネチャがoutパラメータを使用していることを示す場合、シグネチャは、変数に値が返されることを開発者に警告するのに十分なはずです。したがって、これをメソッド名に含めるのは冗長だと思います。自己文書化コードでさえ、明確で簡潔でなければなりません。あなたの言語がこれを明確にしない場合、私はそれを名前で文書化するか、明確かつ簡潔に行うことができるか、またはインラインコメントを使用します。

于 2009-11-16T13:31:14.513 に答える
1

命名法に基準はありません。ただし、メソッドが複合型で動作する場合は、Get...And...() を使用して 2 つのことが行われていることを示す規則を採用することを検討してください。例えば:

int GetPopulationAndMeanAge(out double meanAge)
{
    // ...
    meanAge = CalculateMeanAge();
    return totalPopulation;
}

より良いアプローチは、代わりに複合型を返すことだと思います。ガベージ コレクション言語では、このようなメソッドがたとえば何百万回も呼び出され、インストルメンテーションによって GC が適切に負荷を処理していないことが明らかになった場合を除いて、これを実行しない言い訳はありません。非 GC 言語では、完了時にメモリをクリーンアップする責任者を明確にするという点で、小さな問題が発生します。

前のものを複合型にリファクタリングする (C#):

public class PopulationStatistics {
    int Population { get; set; }
    double MeanAge { get; set; }
}


PopulationStatistics GetPopulationStatistics()
{
    // ...
    return new PopulationStatistics { Population = totalPopulation, MeanAge = CalculateMeanAge };
}
于 2009-11-16T13:43:00.733 に答える
0

代わりにそのパラメータを返さないのはなぜですか?

とにかく、「modify」または「handle」プレフィックスを使用できます。

于 2009-11-16T13:27:26.910 に答える
0

この場合、命名スキームが実際に何であるかよりも、命名の一貫性を保つことがより重要だと思います。名前の付け方に基づいてメソッドから何を期待できるかを知っているので、背後でコーディングする人にとっては物事が簡単になります。

そうは言っても、Get大丈夫なはずです。

于 2009-11-16T13:28:11.497 に答える
0

それは言語によって異なります。
たとえば、C#では、関数の名前に追加する必要はありません。すでに署名に含まれています。out再度指定せずに関数を呼び出すことはできないため、副作用を見逃すリスクはありません。

Int32.TryParse("123", out number);
于 2009-11-16T13:30:20.023 に答える