Ruby:returnif方法返回非nil值
在Ruby中有更好/更干净的方法吗Ruby:returnif方法返回非nil值,ruby,refactoring,guard-clause,Ruby,Refactoring,Guard Clause,在Ruby中有更好/更干净的方法吗 def my_method(x, y) return error if (error = validate(x, y)) # do something else end 我在别处调用了#validate,因此为了保持干燥,我让它返回错误消息。编写相同内容的另一种方法是: def my_method(x, y) unless validate(x, y) # do something else end end 如
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我在别处调用了
#validate
,因此为了保持干燥,我让它返回错误消息。编写相同内容的另一种方法是:
def my_method(x, y)
unless validate(x, y)
# do something else
end
end
如果返回任何内容,将返回验证答案。如果
validate
在输入错误时返回错误,nil
否则,您可以执行以下操作:
def my_method(x, y)
validate(x, y) or # do something else
end
这个更明确、更可读的版本有什么错
def my_method(x, y)
error = validate(x, y)
if error
error
else
# do something else
end
end
在国际海事组织,编写尽可能短的代码没有任何好处。您应该始终以编写可读性和可理解性最高的代码为目标。是
验证(x,y)
返回布尔值
?通常错误(如异常)会停止该过程。他们是你想要避免的一个特殊原因吗?例如,当您运行my_方法时,是否在继续之前检查是否返回了错误对象?否则,您可以引发错误,而不是返回错误