我试着阅读了一些关于重构的教程,我正在努力学习条件。我不想使用三元运算符,但也许应该在方法中提取它?或者有一个聪明的方法来使用地图吗?

detail.stated = if value[:stated].blank?
                  nil
                elsif value[:stated] == "Incomplete"
                  nil
                elsif value[:is_ratio] == "true"
                  value[:stated] == "true"
                else
                  apply_currency_increment_for_save(value[:stated])
                end

最佳答案

如果您将这个逻辑移到一个方法中,由于早期的return(和关键字参数),它可以变得更加清晰:

def stated?(stated:, is_ratio: nil, **)
  return if stated.blank? || stated == "Incomplete"
  return stated == "true" if is_ratio == "true"
  apply_currency_increment_for_save(stated)
end

然后…
detail.stated = stated?(value)

关于ruby-on-rails - ruby -重构if else语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35275608/

10-09 07:41