为什么要在Ruby中避免使用then关键字?

Rea*_*nly 8 ruby coding-style

在几个Ruby风格指南中提到你应该"永远不要使用".就个人而言,我认为"then"关键字允许您使代码更密集,这往往更难以阅读.这个建议还有其他理由吗?

小智 11

我几乎从不使用then关键字.但是,有一种情况我认为它大大提高了可读性.请考虑以下多条件if语句.

例A

if customer.jobs.present? && customer.jobs.last.date.present? && (Date.today - customer.jobs.last.date) <= 90
  puts 'Customer had a job recently'
end
Run Code Online (Sandbox Code Playgroud)

线长太长.难以阅读.

例B

if customer.jobs.present? &&
   customer.jobs.last.date.present? &&
   (Date.today - customer.jobs.last.date) <= 90
  puts 'Customer had a job recently'
end
Run Code Online (Sandbox Code Playgroud)

条件何处结束以及内部代码从何处开始.根据必须Ruby样式指南,你有一个额外的缩进空间用于多行条件,但我仍然觉得它不容易阅读.

例C

if customer.jobs.present? &&
   customer.jobs.last.date.present? &&
   (Date.today - customer.jobs.last.date) <= 90
then
  puts 'Customer had a job recently'
end
Run Code Online (Sandbox Code Playgroud)

对我来说,示例C是目前最清楚的.而这正是then诀窍的用途.


Gis*_*shu 6

如果我没记错的话,then只是将条件与真实部分分开的分隔符之一(分号和换行符是其他分号)

如果你有if语句的if语句,你必须使用其中一个分隔符.

if (1==2) then puts "Math doesn't work" else puts "Math works!" end

对于多行ifs,then 是可选的(换行工作)

if (1==2) 
    puts "Math doesn't work" 
else 
    puts "Math works!" 
end
Run Code Online (Sandbox Code Playgroud)

你可以发一个你提到的风格指南之一的链接......