我有这段代码:
if @locale
HighVoltage.content_path = "#{@template_to_use}/pages/#{@locale}/"
else
HighVoltage.content_path = 'pages/'
end
现在我有了这个版本:
HighVoltage.content_path = @locale ?
"#{@template_to_use}/pages/#{@locale}/" :
'pages/'
编写这段代码的建议方法是什么,第一版或第二版,或者可能是其他版本
答案 0 :(得分:12)
在我看来,这是最好的选择:
HighVoltage.content_path =
if @locale
"#{@template_to_use}/pages/#{@locale}/"
else
'pages/'
end
您不会像在您提供的第一个示例中那样使用HighVoltage.content_path =
重复自己。 但有些人确实觉得我的方法看起来有点难看。如果你相信的话,你可以使用它。
如果需要多行,最好不要使用A ? B : C
语句。
有关详细信息,请参阅https://github.com/bbatsov/ruby-style-guide#use-if-case-returns。
答案 1 :(得分:2)
根据红宝石风格指南,这是首选
HighVoltage.content_path =
if @locale
"#{@template_to_use}/pages/#{@locale}/"
else
'pages/'
end
https://github.com/bbatsov/ruby-style-guide#use-if-case-returns
答案 2 :(得分:2)
为什么不为三元使用单行?
HighVoltage.content_path = @locale ? "#{@template_to_use}/pages/#{@locale}/" : 'pages/'
我认为要么是可读的,要么只是一个偏好的问题......如果你想减少代码行,可以使用第三个选项,如果你喜欢第一个选项的可读性,那么就使用它。