我应该在Ruby中验证方法参数吗?

时间:2012-12-30 00:42:29

标签: ruby arguments type-safety method-parameters

我有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

1 个答案:

答案 0 :(得分:3)

我通常倾向于避免Ruby中的参数验证。

但是,这实际上取决于您的主要目的。如果您担心可靠性,那么只要参数会导致不可恢复的错误,就采取防御措施并提出异常。

还取决于您的使用案例:

  • 他们是公共API吗?您可能会强烈考虑验证。
  • 他们是私有API /方法吗?好吧,我一般都会相信 程序员。

一种有效的方法可能是在调试阶段使用参数检查,有助于检测API的错误和误用,然后 - 一旦测试 - 删除检查。

底线对于这个棘手的问题没有完美的答案。它非常依赖于上下文和开发人员的个人判断。