我们的编码风格表明,如果赋值不适合一行,但赋值将自己适合一行,我们应该将该行缩进四个空格而不是两行。例如:
my_var = Some.reasonable_method_call(param1)
my_var2 =
Some.crazy_long_ridiculous_method_that_doesnt_fit_on_same_line(param1)
我可以使用Rubocop规则强制执行此操作吗?我们在块内部使用两个空格缩进,并且用于长分配的四个空格缩进有助于直观地指示该行不嵌套在块中,而是前一行的延续。
答案 0 :(得分:2)
查看rubocop源后,参数对齐规则似乎在/lib/rubocop/cop/style/align_parameters.rb line 34:
def base_column(node, args)
if fixed_indentation?
lineno = target_method_lineno(node)
line = node.loc.expression.source_buffer.source_line(lineno)
indentation_of_line = /\S.*/.match(line).begin(0)
------> indentation_of_line + configured_indentation_width
else
args.first.loc.column
end
end
configured_indentation_width
在lib/rubocop/cop/mixin/autocorrect_alignment.rb line 10:
def configured_indentation_width
-> config.for_cop('IndentationWidth')['Width']
end
该变量存储在/config/default.yml
中,这需要将所有代码设置为4个空格而不是2个(类似于Python PEP8)。
否则,你可以修改rubocop的源代码,在多行参数赋值/方法调用中总是需要4个空格。
另一个(更好)选项是修改源代码,但添加对配置变量的引用,以便您不使用硬编码值。