我正在尝试在这里清理这种极其丑陋的方法,这迫切需要重构,但我不确定哪种结构最能做到这一点(即案例陈述,或者只是一个精心格式化的if then
陈述)
乍一看,这似乎是一个放置几个很好when
的 's 的 case 语句的理想场所,但我的理解是 case 语句只能用于单个变量,而不是两个,以及各种 irb 的摆弄使用散列或数组来尝试这些语句在这里也没有得到太多启示。
你会怎么做?在检查这样的多个布尔值时,Ruby 中是否有任何常见的技巧来避免这样的代码?
def has_just_one_kind_of_thing?(item, controller)
if (controller == 'foos' && item.widgets.blank?) || (controller == 'foos' && item.doohickeys.blank?) || (controller == 'bars' && item.widgets.blank?) || (controller == 'bars' && item.doohickeys.blank?) || (controller == 'bazes' && item.widgets.blank?) || (controller == 'bazes' && item.contraptions.blank?)
return true
else
return false
end
end