惯用Ruby,用于拆分方法定义

时间:2019-03-06 18:26:26

标签: ruby idiomatic

我正试图把一条线切成碎片

define_method("start_#{event}!") do |user_or_enrollment, setting_name = nil, node_id = nil|

打破这些长方法调用行的常规样式是什么?

3 个答案:

答案 0 :(得分:2)

惯例是您通常不打断这样的行,而只是处理它。即使您努力做到,并非所有内容都可以用短线巧妙地表达出来。

使行更短的一种方法是减少变量名的长度:

define_method("start_#{event}!") do |on, setting = nil, node = nil|

或者使用选项样式定义:

define_method("start_#{event}!") do |on, options = { }|

在您这样称呼的地方:

start_x!(user, setting: setting_name, node_id: node.id)

答案 1 :(得分:1)

可以将块参数分成多行,就像定义方法参数时一样:

define_method("start_#{event}!") do |
                                     user_or_enrollment,
                                     setting_name = nil,
                                     node_id = nil
                                    |
  # method body
end

或者,您可以根据个人喜好进行缩进,例如

define_method("start_#{event}!") do |
  user_or_enrollment,
  setting_name = nil,
  node_id = nil
|
  # method body
end

具体如何设置格式取决于您。在这种情况下,各种样式指南会建议不同的内容。但是,他们通常都同意,希望保持参数数量少,并尽可能避免将参数或参数列表分成多行。

答案 2 :(得分:0)

这主要基于观点。我会去的:

define_method(
  "start_#{event}!"
) do |user_or_enrollment, setting_name = nil, node_id = nil|