在ruby中重构或增强此代码块的最佳方法是什么?
def check(message_type)
if (message_type == 'reminder' and self.copy_reminder == true) or
(message_type == 'rrm' and self.is_rrm == true and self.copy_rrm == true) or
(message_type == 'alert' and self.is_rrm == true and self.copy_alert == true) or
(message_type == 'reply' and self.is_rrm == true and self.copy_user_response == true)
call_some_method
end
请勿使用and
或or
在布尔条件下使用&&
和||
。and
和or
用于控制流。self.
读取属性时不要使用,只是不需要它。不要查布尔这样some_thing == true
,some_thing
是trueish足够了。
而且我更喜欢将复杂的条件转移到私有方法中。这样可以使实际的方法更具可读性。
def check(message_type)
call_some_method if valid_message_type?(message_type)
end
private
def valid_message_type?(message_type)
case message_type
when 'reminder' then copy_reminder
when 'rrm' then is_rrm && copy_rrm
when 'alert' then is_rrm && copy_alert
when 'reply' then is_rrm && copy_user_response
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句