【问题标题】:Hashes vs. Multiple Params?哈希与多个参数?
【发布时间】:2010-11-23 19:11:59
【问题描述】:

在 Ruby 中看到方法接收参数散列而不只是将参数传递给方法是很常见的。

我的问题是——你什么时候为你的方法使用参数,什么时候使用参数散列?

当方法的参数超过一个或两个时,是否说使用参数哈希是一种好习惯?

【问题讨论】:

    标签: ruby argument-passing


    【解决方案1】:

    如果您有 2 个以上的争论。你应该开始考虑使用哈希。 这是在干净的代码link text

    中清楚解释的好习惯

    【讨论】:

      【解决方案2】:

      另一方面,这不仅与 Ruby 有关,而且与所有语言有关:

      在不断变化的 API 中,有时将函数的部分或全部参数声明为单个参数对象(在 Ruby 中这些可能是散列,在 C 结构中等等)以维护 API如果在未来版本中接受的参数集发生变化,则稳定性。然而,明显的缺点是可读性大大降低,除非我真的必须这样做,否则我永远不会使用这种“模式”。

      【讨论】:

        【解决方案3】:

        当有许多可选参数时,或者当您想要接受任意参数时,您可能想要使用哈希,正如您在许多 Rails 的方法中看到的那样。

        【讨论】:

          【解决方案4】:

          只要参数散列表示一组语义上属于一起的选项,我就会使用它们。任何其他作为函数的直接(通常需要)参数的参数,我都会一一传递。

          【讨论】:

          • +1 - 参数散列中不需要任何内容​​。可选参数可以命名为默认值,但如果需要,我倾向于将它们传递给散列并在方法主体中设置默认值。
          【解决方案5】:

          一个明显的用例是,当您覆盖子类中的方法时,您应该在调用父方法时使用散列参数作为父方法的参数。

          【讨论】:

            猜你喜欢
            • 2010-11-10
            • 2012-05-28
            • 2011-05-27
            • 2017-04-24
            • 1970-01-01
            • 1970-01-01
            • 2015-02-08
            • 1970-01-01
            • 2011-02-28
            相关资源
            最近更新 更多