Для документирования классов с помощью roxygen (2) указание заголовка и описания / подробностей выглядит так же, как для функций, методов, данных и т. Д. Однако слоты и наследование являются своего рода животными. Какова лучшая практика - текущая или планируемая - для документирования классов S4 в roxygen2?
Due Diligence:
Я обнаружил упоминание тега @slot
в ранних описаниях содержания кислорода.
Сообщение в списке рассылки R-forge за 2008 год
кажется, указывает на то, что это мертвый,
и нет поддержки @slot
в roxygen:
Это правда о roxygen2? Ранее упоминавшаяся публикация предполагает, что пользователь должен вместо этого создать свой собственный список с разметкой LaTeX. Например. новый класс S4, который расширяет класс "character"
, будет кодироваться и документироваться следующим образом:
#' 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"
)
Однако, хотя это работает, этот подход \describe
, \item
для документирования слотов кажется несовместимым с остальной частью roxygen (2), поскольку нет никаких тегов, ограниченных @
, и слоты могут остаться без документов нет возражений от roxygenize()
. В нем также ничего не говорится о последовательном способе документирования наследования определяемого класса. Я полагаю, что зависимость все еще обычно работает нормально (если конкретный слот требует не базового класса из другого пакета), используя тег @import
.
Итак, подведем итог: какова текущая наилучшая практика для слотов roxygen (2)?
На данный момент есть три варианта для рассмотрения:
- A - Детализированный список (как пример выше).
- B -
@slot
... но с дополнительными тегами / реализацией я пропустил. Мне не удалось заставить @slot работать с roxygen / roxygen2 в версиях, где
он был включен в качестве замены для подробного списка в примере
выше. Опять же, приведенный выше пример работает с roxygen (2).
- C - некоторый альтернативный тег для указания слотов, например
@param
, который может выполнить то же самое.
Я заимствую / расширяю этот вопрос из поста, который я сделал, на странице разработки roxygen2
на github .