2017-07-04 2 views
1

Bei der Entwicklung von Paket mit DBI-Erweiterung (z. B. RJDBC, RSQLite) auf welches Paket soll ich verweisen?Verweise auf DBI-Funktionen im Paket - welche verwenden?

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

oder

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

?

Erste Methode zwingt mich, DBI in Imports zu verwenden, also ziehe ich zweites vor. Aber auf der anderen Seite sollte ich virtuelle Funktion aufrufen und R entscheiden lassen, was ich anrufen soll.

Antwort

1

Die DBI-Spezifikation tun alle Backends benötigen alle DBI Methoden zur Wiederausfuhr, so dass beide Notationen (RSQLite::dbConnect() vs. DBI::dbConnect()) identisch sind für alle praktischen Zwecke:

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

Die DBI:: Schreibweise zum Ausdruck bringt, dass Sie verwenden eine DBI-Funktion, aber wenn Ihr Paket nur RSQLite verwendet, scheint es in Ordnung, dieses Präfix aus Sicht des Codestils zu verwenden.

1

Aus Sicht des Endbenutzers spielt es keine Rolle: RSQLite hängt von DBI ab, daher benötigt Ihr Paket sowohl RSQLite als auch DBI. Aus stilistischer Sicht würde ich den ersten Ansatz bevorzugen, da Sie sonst den Methodenversandmechanismus von R hinterfragen.

Verwandte Themen