ruby-on-rails - ruby - 重构 if else 语句

标签 ruby-on-rails ruby refactoring

我已经尝试阅读一些关于重构的教程,但我正在为条件判断而苦苦挣扎。我不想使用三元运算符,但也许这应该在方法中提取?还是有使用 map 的聪明方法?

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/

相关文章:

ruby-on-rails - Sidekiq、Redis、Rails 和 Ruby - 没有将路径名隐式转换为字符串

python - 长时间运行的数据处理python脚本中的程序结构

Java 反射和重构的痛苦

ruby-on-rails - Rails动态在数据库中创建表

ruby - 将 JS 文件注入(inject) capybara chrome headless

ruby-on-rails - 在 Ubuntu 11.04 上设置 Passenger Phusion

javascript - 重构这段代码的有效方法是什么?

jquery - 在我的 Rails 3 应用程序中实现 jQuery Masonry 时遇到问题

ruby-on-rails - 来自 Stimulus Controller 的 Rails URL 助手?

ruby-on-rails - 为什么默认情况下我的 Rails 应用程序的 .gitignore 文件中包含 config/database.yml?