रॉक्सीजेन (2) के साथ कक्षाओं के दस्तावेजीकरण के लिए, शीर्षक और विवरण / विवरण निर्दिष्ट करना कार्यों, विधियों, डेटा, आदि के लिए समान प्रतीत होता है। हालाँकि, स्लॉट और वंशानुक्रम उनके अपने प्रकार के जानवर हैं। Roxygen2 में S4 कक्षाओं के दस्तावेजीकरण के लिए सबसे अच्छा अभ्यास क्या है - वर्तमान या योजनाबद्ध?
यथोचित परिश्रम:
मुझे @slot
roxygen के शुरुआती विवरणों में एक टैग का उल्लेख मिला ।
2008 R-forge मेलिंग सूची पोस्ट से
प्रतीत होता है कि यह मृत है, और @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) स्लॉट के लिए वर्तमान सर्वोत्तम अभ्यास क्या है?
इस समय विचार करने के लिए तीन विकल्प हैं:
- ए - आइटम की सूची (ऊपर उदाहरण के रूप में)।
- बी -
@slot
... लेकिन अतिरिक्त टैग / कार्यान्वयन से मैं चूक गया। मैं संस्करणों में roxygen / roxygen2 के साथ काम करने के लिए @ एसएलटी प्राप्त करने में असमर्थ था, जहां इसे ऊपर दिए गए उदाहरण में आइटम सूची के प्रतिस्थापन के रूप में शामिल किया गया था। फिर, ऊपर का उदाहरण roxygen (2) के साथ काम करता है।- सी - स्लॉट्स को निर्दिष्ट करने के लिए कुछ वैकल्पिक टैग, जैसे
@param
, वही काम पूरा करेगा।
मैं इस प्रश्न को एक पोस्ट से उधार ले रहा हूं / बढ़ा रहा हूं जिसे मैंने githubroxygen2
पर विकास पृष्ठ पर बनाया है ।
setClass
तुलना में कई कम बयान हैं setMethod
। एक बार @slot
लागू होने के बाद बदलाव करना बहुत दर्दनाक नहीं होगा।
@slot
शायद आप दीर्घावधि चाहते हैं, लेकिन इसे पहले लागू करना होगा ...