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

时间:2011-04-14 06:20:55

标签: ruby coding-style

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

4 个答案:

答案 0 :(得分:10)

我几乎从不使用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

线长太长。难以阅读。

示例B

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

条件何处结束以及内部代码从何处开始。根据必须使用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

对我而言,示例C是目前最清楚的。使用then可以解决问题。

答案 1 :(得分: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

您是否可以发布指向其中一个样式指南的链接...

答案 2 :(得分:2)

我认为“从不使用then”是错误的。使用太多非字母字符会使代码难以读取,如perl或APL。使用自然语言词通常会使程序员更舒服。它取决于代码的可读性和紧凑性之间的平衡。三元运算符偶尔会很方便,但如果被滥用会很难看。

答案 3 :(得分:0)

“ then”关键字实际上并没有在ruby中添加任何内容,它只是使if语句更具说服力。 Ruby的“ then”是从Ada借来的,而Ada是从Algol 68借来的。

  

永远不要使用

相反,没有理由不这样做。