TLDR
严格的最佳实践是否建议积极主动的 R 开发人员使用约定明确消除其包文件中的所有base
函数——甚至是无处不在的常见函数,如or c()
?cat()
.R
package::function()
语境
虽然是新手开发人员,但我需要在 R 中创建一个(专有)包。文本R 包(由权威作者 Hadley Wickham 和 Jenny Bryan 撰写)已被证明非常有用(如果偶尔不推荐使用)。
我热衷于从一开始就遵循最佳实践,以便为自己节省时间和精力。如正文中所述,使用运算符可以
通过消除名称重载的函数的歧义::
来防止当前和将来的冲突。也就是说,作者很小心地按照约定介绍了每个函数,并且他们建议在一个包的文件中package::function()
普遍使用它。.R
但是,他们的代码示例经常调用来自base
包但没有附带base::
. 许多base
函数,比如无处不在的c()
or cat()
,被 R 程序员在睡梦中使用,并且(我想)不太可能被一个自以为是的开发人员超载。尽管如此,看到(例如)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()
base
my_vector <- base::c(1, 2, 3)
整个.R
文件?如果没有,是否有既定的惯例可以平衡明确与优雅?
与往常一样,我很感谢任何帮助,尤其是在这方面,这是我在 Stack Overflow 上的第一篇文章。