【发布时间】:2010-11-23 19:11:59
【问题描述】:
在 Ruby 中看到方法接收参数散列而不只是将参数传递给方法是很常见的。
我的问题是——你什么时候为你的方法使用参数,什么时候使用参数散列?
当方法的参数超过一个或两个时,是否说使用参数哈希是一种好习惯?
【问题讨论】:
标签: ruby argument-passing
在 Ruby 中看到方法接收参数散列而不只是将参数传递给方法是很常见的。
我的问题是——你什么时候为你的方法使用参数,什么时候使用参数散列?
当方法的参数超过一个或两个时,是否说使用参数哈希是一种好习惯?
【问题讨论】:
标签: ruby argument-passing
如果您有 2 个以上的争论。你应该开始考虑使用哈希。 这是在干净的代码link text
中清楚解释的好习惯【讨论】:
另一方面,这不仅与 Ruby 有关,而且与所有语言有关:
在不断变化的 API 中,有时将函数的部分或全部参数声明为单个参数对象(在 Ruby 中这些可能是散列,在 C 结构中等等)以维护 API如果在未来版本中接受的参数集发生变化,则稳定性。然而,明显的缺点是可读性大大降低,除非我真的必须这样做,否则我永远不会使用这种“模式”。
【讨论】:
当有许多可选参数时,或者当您想要接受任意参数时,您可能想要使用哈希,正如您在许多 Rails 的方法中看到的那样。
【讨论】:
只要参数散列表示一组语义上属于一起的选项,我就会使用它们。任何其他作为函数的直接(通常需要)参数的参数,我都会一一传递。
【讨论】:
一个明显的用例是,当您覆盖子类中的方法时,您应该在调用父方法时使用散列参数作为父方法的参数。
【讨论】: