1

在使用 DBI 扩展(例如 RJDBC、RSQLite)开发包时,我应该参考哪个包?

connect_my_db <- function() DBI::dbConnect(RSQLite::SQLite(), "my_db.sqlite")

或者

connect_my_db <- function() RSQLite::dbConnect(RSQLite::SQLite(), "my_db.sqlite")

?

第一种方法迫使我在 Imports 中使用 DBI,所以我更喜欢第二种方法。但另一方面,我应该调用虚函数,让 R 决定调用什么。

4

2 回答 2

1

从最终用户的角度来看,这并不重要:RSQLite 依赖于 DBI,因此无论如何您的包都需要安装 RSQLite 和 DBI。从风格的角度来看,我更喜欢第一种方法,否则你会怀疑 R 的方法调度机制。

于 2017-07-04T12:38:16.250 回答
1

DBI 规范确实要求所有后端重新导出所有 DBI 的方法,因此两种表示法(RSQLite::dbConnect()vs. DBI::dbConnect())对于所有实际目的都是相同的:

identical(DBI::dbConnect, RSQLite::dbConnect)
#> [1] TRUE

DBI::符号表示您正在使用 DBI 函数,但如果您的包仅使用RSQLite它,从代码样式的角度来看,使用该前缀似乎很好。

于 2017-07-04T20:55:45.457 回答