Ruby 多行参数后跟一个块的样式实践

Ruby style practice for multi-line arguments followed by a block

当您有一个方法调用、多行参数和一个块时,ruby 中关于样式和缩进的一般建议是什么。例如

collection :available_surveys,
  exec_context: :decorator,
  class: Survey,
  skip_render: lambda {|object, opts| opts[:show_all_surveys] != true } do
    property :name, as: :survey_name
    property :id
  end

该方法是集合,它有 4 个分布在多行中的参数,然后是一个块参数。我的一位同事觉得上面的缩进样式使块看起来像是与最后一个参数相关联,而不是与集合方法相关联。我在网上找不到任何明确的风格推荐。

对于如此复杂的方法调用,我会单独构建参数并将它们展开:

collection_args = [
  :available_surveys,
  {
    exec_context: :decorator,
    class: Survey,
    skip_render: lambda {|object, opts| opts[:show_all_surveys] != true }
  }
]
collection *collection_args do
  property :name, as: :survey_name
  property :id
end