Я делаю пакет R и использую roxygen2 для автоматической генерации моего файла NAMESPACE, что означает, что я объявляю свой импорт в комментариях roxygen2 над каждой функцией в моем пакете, что-то вроде этого:
#' @importFrom somePackage someFunc someOtherFunc
f1 <- function() {
someFunc()
someOtherFunc()
}
#' @importFrom somePackage aThirdFunc
f2 <- function() {
someFunc()
aThirdFunc()
}
Однако, несмотря на то, что они помещаются рядом с объявлениями отдельных функций, объявления @importFrom
являются глобальными для всего пространства имен пакета.Это означает, что импорт someFunc
выше f1
в моем примере также работает для f2
, хотя я забыл включить someFunc
в импорт для f2
.Это означает, что легко позволить этим объявлениям не синхронизироваться со связанными функциями, что в результате приведет к неожиданному поведению в дальнейшем.Например, если я решу удалить f1
из своего пакета в будущем или переопределить его, чтобы он больше не использовал somePackage
, и я удалил соответствующий оператор импорта, f2
внезапно будет прерван.
Итак, чтобы избежать этого, можно ли как-нибудь проверить каждую функцию только по ее собственным объявлениям импорта, чтобы убедиться, что они всегда синхронизированы и не зависят неявно от импорта, объявленного для других функций?Или я должен просто полностью отказаться от этого и вернуться к ручному ведению файла NAMESPACE?