我有Java背景,在Java中,当程序员调用带有错误参数的方法时,将抛出异常。Ruby程序员如何处理错误的方法参数?
来自核心类的两个相反的例子:
irb(main):009:0> "" * (-2)
ArgumentError: negative argument
from (irb):9:in `*'
from (irb):9
from C:/Ruby/Ruby193/bin/irb:12:in `<main>'
irb(main):013:0> (-2).times { puts 'hello' }
=> -2
在Ruby中,我通常倾向于避免参数验证。
然而,这取决于你的主要目的是什么。如果您关心可靠性,那么在参数将导致不可恢复的错误时采取防御措施并引发异常。
这也取决于你的用例:
- 它们是公共api吗?您可以强烈考虑验证。
- 是私有api/方法吗?我一般会相信程序员。
一种有效的方法是在调试阶段使用参数检查,这有助于检测api的错误和误用,然后-一旦测试-删除检查。
这个棘手的问题没有完美的答案。这取决于环境和开发者的个人判断。