R 开发:对 `base` 包使用 `::` 运算符

如何解决R 开发:对 `base` 包使用 `::` 运算符

TLDR

严格的最佳实践是否建议积极主动的 R 开发人员明确消除 base他们的包,使用 c() 约定?


上下文

虽然是新手开发人员,但我需要在 R 中创建一个(专有)包。文本 R Packages(由权威作者 Hadley Wickham 和 Jenny Bryan 撰写)已被证明非常有用(如果偶尔被弃用)。

>

我从一开始就热衷于遵循最佳做法,以节省自己的时间和精力。如in the text所述,使用cat()运算符可以防止当前 未来的冲突,通过消除名称重载的函数的歧义。也就是说,作者们小心翼翼地介绍了具有 .R 约定的每个函数,并且他们建议在一个包的 package::function() 文件中普遍使用它。

然而,他们的代码示例经常调用来自 :: 包但没有 package::function() 伴随的函数。许多 .R 函数,例如无处不在的 basebase::,被 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?