这个问题可能不属于这里,但我需要一些关于什么被认为是“最佳实践”的建议。我有几个函数,所有这些函数都依赖于相同的输入,例如a
,b
和c
。为这些创建错误陷阱功能是一种好习惯吗?还是应该将其编码到每个函数中?
例如:
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
}
这是软件开发中的良好做法还是应该避免这种做法?
答案 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, ...))
}