Ruby中有更好/更清晰的方法嗎?Ruby:如果方法返回非零值,則返回
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我在別處打電話給#validate
,所以爲了保持乾爽,我讓它返回錯誤信息。
Ruby中有更好/更清晰的方法嗎?Ruby:如果方法返回非零值,則返回
def my_method(x, y)
return error if (error = validate(x, y))
# do something else
end
我在別處打電話給#validate
,所以爲了保持乾爽,我讓它返回錯誤信息。
什麼不對這個更明確,更具可讀性的版本?
def my_method(x, y)
error = validate(x, y)
if error
error
else
# do something else
end
end
IMO在編寫最短代碼時沒有任何好處。您應該始終致力於編寫最易讀易懂的代碼。
另一種方式來寫同樣的事情將是:
def my_method(x, y)
unless validate(x, y)
# do something else
end
end
這將返回答案來驗證它是否返回任何東西。
如果在輸入錯誤和nil
否則validate
將返回錯誤,那麼你可以做:
def my_method(x, y)
validate(x, y) or # do something else
end
'validate(x,y)'返回一個'Boolean'嗎? – Drenmi
正常情況下,像例外情況一樣,錯誤會中止過程。他們是爲什麼要避免這種情況的特殊原因?例如,當你運行my_method時,你是否隨後檢查在繼續之前是否返回錯誤對象?否則,而不是返回錯誤,你可以引發錯誤 – jphager2