何时使用out参数而不是返回值

时间:2015-06-11 14:38:59

标签: function oop return-value allocation out

在浏览一些公共API(例如android.view.View.getLocationOnScreen)时,我注意到使用day <- c(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14) diffFromNearest <- function(x, modulus) { dif <- x %% modulus ifelse(dif > modulus %/% 2, modulus - dif, dif) } diffFromNearest(day, 7) [1] 0 1 2 3 3 2 1 0 1 2 3 3 2 1 0 函数与void的方法相当常见参数而不是简单地返回一个值。

当有多个返回值时,我看到了这种方法的好处,并且创建一个专用的复杂类型来保存它们没有意义。当函数返回某个接口并且允许用户选择最适合他的情况的实现时,它在OOP中也很有用 在我见过的许多例子中(例如上面的例子),情况并非如此。

除了这两个特定情况,我认为这种方法只有缺点:

  • 新手开发者/用户往往会感到困惑。
  • 每个调用者必须自己分配out参数内存,这会导致代码重复和可能的漏洞。
  • 它要求函数对未初始化的out参数执行额外检查,并在未初始化时确定默认行为(内部初始化/抛出异常/返回空值或默认值)。

    那么,你能想到任何好处,或者应该返回out值的案例的一般标准吗?

  • 0 个答案:

    没有答案