Я почти никогда не использую ключевое слово 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
делает трюк.