问题描述
TLDR
严格的最佳实践是否建议积极主动的 R 开发人员明确消除 base
他们的包,使用 c()
约定?
上下文
虽然是新手开发人员,但我需要在 R 中创建一个(专有)包。文本 R Packages(由权威作者 Hadley Wickham 和 Jenny Bryan 撰写)已被证明非常有用(如果偶尔被弃用)。
>我从一开始就热衷于遵循最佳做法,以节省自己的时间和精力。如in the text所述,使用cat()
运算符可以防止当前和
未来的冲突,通过消除名称重载的函数的歧义。也就是说,作者们小心翼翼地介绍了具有 .R
约定的每个函数,并且他们建议在一个包的 package::function()
文件中普遍使用它。
然而,他们的代码示例经常调用来自 ::
包但没有 package::function()
伴随的函数。许多 .R
函数,例如无处不在的 base
或 base::
,被 R 程序员在睡眠中使用,并且(我想)不太可能被一个自以为是的开发商。尽管如此,看到(例如)base
与(c()
函数)cat()
的并列,都在 a few lines of text 之内,还是令人困惑。
...(这些函数的灵感来自于 base::with()
的工作原理。)
base
我理解 print()
的目的是明确地向读者介绍 base::with()
函数。然而,当包被明确命名为从任何其他包调用的任何函数时,f <- function(x,sig_digits) {
# imagine lots of code here
withr::with_options(
list(digits = sig_digits),print(x)
)
# ... and a lot more code here
}
的缺失(在代码本身内)似乎很突出。鉴于我的经验不足,我对假设作者的意图感到不自在。
问题
base::with()
函数的名称是否足够独特,以至于使用这种约定(为 with()
包中的每个 base::
调用 base
)是不值得的?函数重载的风险(在未来的某个时候)远远超过
base::function()
整个 function()
文件?如果没有,是否有既定的惯例可以平衡明确性和优雅性?
与往常一样,我很感激任何帮助,尤其是我在 Stack Overflow 上的第一篇文章。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)