ruby - 返回多个结果是一种反模式吗?

标签 ruby anti-patterns

<分区>

我强烈反对返回多个结果以进行进一步多重赋值的方法,如下所示:

class ImportUsersFromFile
  def perform 
    ...
    [imported_rows, errors]
  end
end

因为它引入了一个晦涩难懂的数据结构“一个数组,第一个元素是这个东西,第二个元素是那个东西”。如果很明显该方法应该返回这样的结构就好了。例如,可以从类似 Person#name_parts 的方法中期望三个值 first_name, middle_name, last_name

但我只能用我的话来支持我的观点。多重结果是否被视为某种反模式或代码味道?希望有一些链接。

最佳答案

就其值(value)而言,我不确定我是否会将其称为反模式。我同意你的观点,但事实上 Ruby 的解释器专门处理你所谈论的问题:

def foo
  [1,2]
end

a = foo    # -> a = [1,2]
a,b = foo  # -> a = 1, b = 2
_,b = foo  # -> b = 2

就我而言,必须知道方法/函数返回两个值并不比必须知道您传递给它两个值更糟糕。

话说回来:如果这让你不舒服,你当​​然应该避免自己做。这没有错。

关于ruby - 返回多个结果是一种反模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36327994/

相关文章:

reactjs - 来自 props 的“value”和状态中的 'thisValue',反模式?

design-patterns - 误用的设计模式

gradle - 为什么 LATEST 是依赖管理反模式?

c# - 单一范式 OOP 会导致抽象反转吗?

ruby - 上帝不会注册正在运行的自定义服务

Ruby - fork 进程上的 set_trace_func

ruby-on-rails - 带有 DelayedJob 的 Rails 5 导致错误

ruby - 在 ruby​​ 中使用散列密码

php - `return $this;` 设计模式还是反模式?

ruby - 有什么方法可以在 Ruby 中将多个属性/方法与符号冒号运算符一起使用?