多行参数后跟 block 的 Ruby 风格实践

标签 ruby coding-style

<分区>

当你有一个方法调用、多行参数和一个 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 个分布在多行中的参数,然后是一个 block 参数。我的一位同事觉得上面的缩进样式使 block 看起来像是与最后一个参数相关联,而不是与集合方法相关联。我在互联网上找不到任何明确的风格推荐。

最佳答案

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

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

关于多行参数后跟 block 的 Ruby 风格实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074356/

相关文章:

ruby - 使用ruby查找txt文件中最年长者的姓名和年龄

ruby-on-rails - 为什么 Capistrano 将通过命令传递给 `run` 的标志解释为输入?

javascript - 我怎样才能实现:success and :before with form_for?

ruby - 哈希与多个参数?

ruby-on-rails - 如何从 ruby​​ on rails 中的 url 获取特定值

c - 混合标准和精确宽度类型

java - 独立的 java 基础 java 格式化程序

python - 在 python 中使用 "or"赋值

objective-c - 在 Objective C 中,if (object == nil) 和 if (nil == object) 之间有区别吗?

c++ - C++中的命名空间级别枚举