为变量赋值的Ruby“if”块推荐的缩进样式



以下哪种是更好的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。我的理由:

  1. 代码块在相同的缩进级别上打开和关闭,从而创建"视觉衔接"。

  2. 如果变量名称更改了大小,则不需要编辑任何内容(不过,有些文本编辑器会自动处理)。

  3. 您可以在源代码中创建一个"洞"。变量名称越大,洞就越大。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

最新更新