我强烈反对返回多个结果以进行进一步多重赋值的方法,如下所示:
class ImportUsersFromFile
def perform
...
[imported_rows, errors]
end
end
因为它引入了一个模糊且不明显的数据结构“一个数组,其中第一个元素是这个东西,第二个元素就是其他东西”。如果很明显该方法应该返回这样的结构,那就没问题了。例如,可以从first_name, middle_name, last_name
这样的方法中预期三个值Person#name_parts
。
但除了我的话,我无法支持我的意见。多个结果被认为是某种反模式或代码味道吗?愿意有一些联系。
答案 0 :(得分:1)
为了它的价值,我不确定我会称之为反模式。我确实理解你的观点,但事实上Ruby特别有解释器处理你所讨论的问题:
def foo
[1,2]
end
a = foo # -> a = [1,2]
a,b = foo # -> a = 1, b = 2
_,b = foo # -> b = 2
因此,就我而言,必须知道方法/函数返回两个值并不比必须知道你传递两个值更糟糕。
话虽如此:如果它让你不舒服,你当然应该避免自己做。这没什么不对。