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

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

我几乎从不使用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的伎俩。

如果我没记错的话, 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 

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

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