讓我們說,我在Rails的這個功能(其實我也:P - EVAL被使用,因爲會出現第三,第四或更多class_number在未來):在Rails中處理奇怪異常的最佳做法是什麼?
def all_profession_costs(class_number)
second = {'Wealth Ranger' => 1000, 'Wisdom Vacuum' => 1000, 'Life Leecher' => 1000, 'Dense Mass' => 1000}
costs = eval(class_number)
costs
end
這似乎是工作的罰款現在,但如果我不小心使用'firsta'作爲我的class_number,整個事情可能會崩潰,也許會出現一個難以發現的錯誤。
所以,現在我在想兩件事。我絕對想盡可能檢查一些事情,但我不喜歡把「引發RuntimeError」,因爲它使代碼更醜陋。並使其運行速度變慢。那麼,我認爲後者是可以忍受的,因爲檢查意味着更好的代碼。
但是,我不喜歡醜陋。我正在考慮創建一個單獨的ExceptionHandling模塊,以便進行這種驗證。
在這個例子中,我想檢查class_number是'first','second'還是'third'。
,而不是像這樣:
raise RuntimeError unless ['first', 'second', 'third'].include?(class_number.to_s)
也許我可以寫一個簡單的模塊(可能就像是一個Python的裝飾),這將使這件事情更好的閱讀,我認爲是更漂亮的代碼,東西如:
validates class_number, :inclusion => ['first', 'second', 'third']
有點像標準模型驗證器。
您對此有何看法?這是一個好主意嗎?你會如何對待Rails中的一些錯誤處理?
class_number是做什麼的? – edmz 2011-03-24 06:48:54
它只是一個函數參數,用於拾取第一個,第二個或第三個散列(在本例中,只有第二個散列存在於函數中,但會添加更多散列)。根本不用擔心。 – Spyros 2011-03-24 06:52:18