W przypadku dokumentacji klas za pomocą roxygen (2) określenie tytułu i opisu / szczegółów wydaje się być takie samo, jak w przypadku funkcji, metod, danych itp. Jednakże szczeliny i dziedziczenie są ich rodzajem zwierząt. Jaka jest najlepsza praktyka - obecna lub planowana - do dokumentowania klas S4 w roxygen2?
Due Diligence:
We @slot
wczesnych opisach roxygen znalazłem wzmiankę o znaczniku.
Post z listy mailingowej R-forge z 2008 roku
wydaje się wskazywać, że jest martwy i nie ma wsparcia dla @slot
roxygen:
Czy to prawda o roxygen2? Wcześniej wspomniany post sugeruje, że użytkownik powinien zamiast tego stworzyć własną listę z elementami ze znacznikami LaTeX. Np. Nowa klasa S4, która ją rozszerza, "character"
zostałaby zakodowana i udokumentowana w następujący sposób:
#' The title for my S4 class that extends \code{"character"} class.
#'
#' Some details about this class and my plans for it in the body.
#'
#' \describe{
#' \item{myslot1}{A logical keeping track of something.}
#'
#' \item{myslot2}{An integer specifying something else.}
#'
#' \item{myslot3}{A data.frame holding some data.}
#' }
#' @name mynewclass-class
#' @rdname mynewclass-class
#' @exportClass mynewclass
setClass("mynewclass",
representation(myslot1="logical",
myslot2="integer",
myslot3="data.frame"),
contains = "character"
)
Jednak mimo to działa, to \describe
, \item
podejście do dokumentowania szczelin wydaje niespójne z resztą roxygen (2), ponieważ nie istnieją żadne @
-delimited tagi i szczelin może pójść nieudokumentowane bez sprzeciwu roxygenize()
. Nie mówi też nic o spójnym sposobie dokumentowania dziedziczenia definiowanej klasy. Wyobrażam sobie, że zależność nadal ogólnie działa dobrze (jeśli dany boks wymaga klasy innej niż podstawowa z innego pakietu) przy użyciu @import
znacznika.
Podsumowując, jaka jest obecnie najlepsza praktyka dla automatów Roxygen (2)?
Obecnie wydaje się, że należy rozważyć trzy opcje:
- A - Lista przedmiotów (jak przykład powyżej).
- B -
@slot
... ale brakowało mi dodatkowych tagów / implementacji. Nie mogłem zmusić @slot do pracy z roxygen / roxygen2 w wersjach, w których został on uwzględniony jako zamiennik listy wyszczególnionej w powyższym przykładzie. Ponownie powyższy przykład działa z roxygenem (2).- C - Jakiś alternatywny tag do określania gniazd, na przykład
@param
, który osiągnąłby to samo.
Pożyczam / rozszerzam to pytanie z postu, który napisałem na stronie roxygen2
programistycznej na github .
setClass
instrukcji niż setMethod
. Dokonanie zmiany po jej @slot
wdrożeniu nie będzie zbyt bolesne.
@slot
jest prawdopodobnie tym, czego chcesz na dłuższą metę, ale najpierw trzeba go wdrożyć ...