我应该将已弃用的函数保留多长时间?

lan*_*dau 3 r deprecated r-package

对于 R 包,是否存在关于弃用过时函数后应保留该函数多长时间的指南?降级到废止怎么办?去念?

teu*_*and 5

我承认这个问题主要是基于观点,但这里有一些想法。

Hadley Wickham在 Twitter 上进行了一项民意调查,提出了一个非常相似的问题,大多数人投票认为他应该等待 4-5 年再删除已弃用的功能。诚然,这是民意调查中可用的最短选项,但第二受欢迎的答案是 10 年以上。

现在,这当然取决于您如何弃用它。{lifecycle} 包的文档收集了一些关于函数弃用的想法,值得一读。{lifecycle} 文章建议首先在全局环境中使用某个函数时发出警告并测试该函数(即,当其他开发人员在其包中使用您的已软弃用的函数时,不要发出警告)。接下来每次都发出硬警告,最后让函数每次都返回错误。

当您以不同的函数名称发布非常相似的功能时,事情会发生一些变化,这称为“取代”函数。我认为这对于任何更新都很好。我的建议是使用以下内容:

# Your function that supercedes the older one
plus <- function(x, y) x + y

# Your deprecated function
add <- function(x, y) {
  warning("`add()` is deprecated. Using `plus()` instead.")
  plus(x, y)
} 
Run Code Online (Sandbox Code Playgroud)

您可以做的另一件事是在互联网(或 GitHub)上进行逐字搜索library(your_package),或者your_package::my_to_be_deprecated_function查看其他人是否以及如何在他们共享的代码中使用它(以及该代码是否只是一次性分析脚本或旨在被其他人重复使用)。如果您发现某人的用例无法轻易地被其他功能取代,您可能会考虑将其保留更长时间或软弃用它而不是硬弃用它。

如果您发现人们几乎不使用您的功能,您的软件包不在集中存储库(CRAN / Bioconductor)上,或者您没有在任何地方宣传您的功能,我个人认为您可以采取更多自由该base::data.frame()功能背后的开发人员。