以下哪种是更好的Ruby代码格式样式,为什么?
选项A:
def load_business
@business ||= if params[:badge_uuid]
# some code
else
# some other code
end
end
选项B:
def load_business
@business ||= if params[:badge_uuid]
# some code
else
# some other code
end
end
这是一个主观问题,所以我们只能给出(希望是合理的)意见。我总是使用选项A。我的理由:
-
代码块在相同的缩进级别上打开和关闭,从而创建"视觉衔接"。
-
如果变量名称更改了大小,则不需要编辑任何内容(不过,有些文本编辑器会自动处理)。
-
您可以在源代码中创建一个"洞"。变量名称越大,洞就越大。IMO这在视觉上很烦人。此外,在达到合理的80/100字符限制之前,可用空间会减少。
我在写多行散列/数组/时使用这种风格。。。(注意最后一个元素中的逗号,这样我们就可以轻松地以差异友好的方式重新排序):
hash = {
:a => 1,
:b => 2,
}
array = [
:a,
:b,
]
我会使用选项A.
这里有一些ActiveRecord代码也是这样。
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/associations/has_many_association.rb#L35
编辑:
这是一个非常固执己见的问题,很可能没有正确的答案。正因为如此,无论你怎么做,只要它不仅仅是丑陋的代码,人们可能都不会反对你。
使用if
块的值不会发现我死了。也许是因为我的背景是if
是一个语句,而不是一个表达式。。。所以我的两分钱是:
def load_business
@business ||= ( params[:badge_uuid]
? # some code
: # some other code)
end
如果这些代码不是纯表达式,我会将它们分配给if
的每个部分中的一个值,并使用该变量来更新@business
。