让我们说,我在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