在R中纠正错误陷阱

时间:2013-10-19 00:41:09

标签: r

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

例如:

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
}

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

1 个答案:

答案 0 :(得分:2)

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

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, ...))
}