1

这个问题可能不属于这里,但我需要一些关于什么是“最佳实践”的建议。我有几个函数,所有这些函数都依赖于相同的输入,比如说a,bc. 为这些创建错误陷阱功能是一种好习惯吗?还是应该将其编码到每个函数中?

例如:

firstFunction <- function(a, b, c) {
  # check a; check b; check c; 
  # do something
}

secondFunction < function(a, b, c, from_first) {
  # check a; check b; check c; 
  # do something
}

可能如下:

checkthem <- function(a, b, c) {
  # check 
  # stop
}

secondFunction(a, b, c, from_first) { 
   checkthem(a,b,c) 
   # do something
}

这是软件开发中的良好做法还是我应该避免这种做法?

4

1 回答 1

2

您还可以创建一个新的入口函数,在其中进行检查并调用第一个或第二个函数。由于这两个函数共享许多参数,因此应该具有相似的行为,因此将它们分组在同一个主函数中是合乎逻辑的。另请注意,使用此解决方案,您可以在代码中调用一次检查,以便更容易维护。

firstFunction <- function(a, b, c) {
  # do something
}

secondFunction <- function(a, b, c, from_first) {
  # do something
}

mainFunction(a,b,c,type="first",...){
  do.check(a,b,c)  ##  you should define this function
  switch(type,
         first  = firstFunction(a,b,c),
         second = secondFunction(a,b,c,...))
}

或者按照评论中的建议:

run_with_check <- function(fun, a, b, c, ...){ 
      do.check(a, b, c)
      do.call(fun,list(a, b, c, ...))
}
于 2013-10-19T01:02:50.353 回答