私はこのように、さらに複数の割当のために複数の結果を返す方法に対する強い感情を持っている:複数の結果を反復で返していますか?
class ImportUsersFromFile
def perform
...
[imported_rows, errors]
end
end
それはこの事と第二ある最初の要素その曖昧とinobviousデータ構造「配列を導入するので他のものです "。このような構造が返されることが明白であれば問題ありません。たとえば、first_name, middle_name, last_name
という3つの値が、Person#name_parts
のようなメソッドから期待されます。
しかし、私の言葉以外のもので私の意見を裏付けることはできません。複数の結果がある種のアンチパターンやコードの匂いと考えられていますか?いくつかのリンクが大好きです。
あなたのコードは、RubyのDestructuring機能を使用して複数の値にできる配列を返します。配列の何が問題ですか? ところで、なぜ戻り値に入れるのではなく、エラーを起こさないのですか? – sschmeck
この場合、配列を破壊することで何が問題になるのか説明しました。インターフェイスが明確ではありません。 1つは、 'perform'がインポートされたユーザのリストを返すと期待することです。もう1つは本当に2つのリストの配列を返すことを知ることです。エラーは例外ではないため、私の場合は発生しません。一部の行にエラーがある場合は、他の行をインポートする必要があります。 – Hnatt
次に、メソッドインタフェースは2つのバケットを返します.1つは良い行と1つは悪いバケットです。それは私には合理的だが反パターンを好まない。エラーの場合に問題がなければ、 'users、_ = importer.perform'のように明示的に無視してください。 – sschmeck