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