3

長い間、私の直感と実践は、可能であればパラメーターを避けることでした。私は、関数には 1 つの論理的な目的が必要であり、それは通常、1 つの戻り値の型 (複数のものを返さない) を意味すると考えています。複数のものを返すことが望ましい場合もあります (fe std::map::insert)。これは、ペア/タプルまたは出力パラメーターとして実行できることを知っています。どちらを使用するかという議論は、私にとってはそれほど重要ではありません。

出力パラメーターまたは戻り値のいずれかを優先する概念、設計、またはパフォーマンス上の理由は何ですか?

4

2 に答える 2

6

そうです、RVO は大きな型であっても値による戻りを可能にするため、out パラメーターは実際には必要ありません。そして、複数のものを返さなければならないことは、コードの臭いであるか、構造に適切に詰め込まれている可能性があります。

残りの唯一の理由は、一貫性です。クラスにパラメーターによって返される数十のメソッドが既にある場合は、それに固執してください(気の毒なことをリファクタリングする自由がない限り:)。

于 2013-09-24T13:22:54.917 に答える
0

コンテキストによっては、3 番目の代替手段としてコールバックを渡すこともできます。呼び出された関数が複数の値を「生成」する場合、コールバックには複数のメソッドが含まれる場合があります。

コールバック引数を取る関数は実際には「関数」の定義に適合しませんが、複数の値を返す関数 (IMO) も適合しません。

于 2013-09-24T13:52:58.690 に答える