में कक्षाओं और मॉड्यूल का दस्तावेज़ीकरण मुझे समूहित मॉड्यूल के सेट के लिए मेरे दस्तावेज़ लिखने में कुछ परेशानी हो रही है। मुझे लगता है कि यह आंशिक रूप से @class
, @module
और @namespace
पर एक गलत धारणा है। (या हो सकता है कि यह याहू में जेएस में 'शास्त्रीय' भाषा शब्दावली को छेड़छाड़ करने का नतीजा हो।)YUIDocs
मुझे नीचे एक चौंका देने वाला नमूना मिला है जो दिखा रहा है कि मेरा अधिकांश कोड कैसे लिखा गया है और यूयूआईडीओसी में इसे दस्तावेज करने का मेरा प्रयास -अंदाज। पहले दो भाग (Foo
और BazManager
) बहुत सरल हैं। मेरे लिए:
Foo
@class
है;Baz
@class
है;BazManager
@module
(या शायद@class
है जिसमें केवल@static
सदस्य हैं);Qux
भी@module
है लेकिन इसमें केवल विधियां हैं।
मेरे समस्याएं हैं:
- हैं
BazManager
एक@module
है,Foo
BazManager
के तहत पता चलता है; - यदि
BazManager
@class
है, तोBaz
के अंदर विधियों को इसमें शामिल किया जाए यदि आप@for
को सब कुछ में नहीं जोड़ते हैं; - यदि
BazManager
@class
है, तोBaz
की दस्तावेज़ीकरण वास्तव में मुश्किल हो जाती है; - मुझे वास्तव में नहीं पता कि मुझे
Qux
दस्तावेज कैसे करना है। ऐसा लगता है कि मुझे मॉड्यूल होना है, लेकिन चूंकि इसमें@class
ईएस नहीं है, इसलिए यहBazManager
समेत इसके आसपास सबकुछ घूमता है। तो यह@class
होना चाहिए।
क्या कोई सुझाव दे सकता है कि मुझे यह कैसे करना चाहिए? मुझे वास्तव में परवाह नहीं है कि अगर मुझे दस्तावेज में सबकुछ ठीक से उत्पन्न हो जाता है तब तक मुझे सही शर्तें मिलती हैं।
// File: Widgets.js
/**
MyNamespace namespace
@namespace MyNamespace
*/
var MyNamespace = window.MyNamespace || {};
//--------------------PART 1: Foo-------------------//
/**
This is a description of Foo.
@class Foo
*/
MyNamespace.Foo = function() {
this.toString = function() {
return "I am a foo";
};
/**
This is Foo's private method description.
@method privateMethod
@private
*/
var privateMethod = function() {};
/**
This is Foo's public method description.
@method publicMethod
*/
this.publicMethod = function() {};
};
//--------------------PART 2: Baz-------------------//
/**
This is a description of BazManager.
@module BazManager
@namespace MyNamespace
*/
MyNamespace.BazManager = (function() {
var self = {};
/**
This is a description of Baz.
@class Baz
*/
var Baz = function (type) {
/**
toString description
@method toString
@returns {String}
*/
this.toString = function() {
return "I am a baz and I'm " + type;
};
};
/**
This is BazManager's privateBaz description.
@method privateBaz
@private
*/
var privateBaz = new Baz("private");
/**
This is BazManager's publicBaz description.
@method publicBaz
*/
self.publicBaz = new Baz("public");
return self;
}());
//--------------------PART 3: Qux-------------------//
MyNamespace.Qux = (function() {
var self = {};
/**
execute description
@method execute
@private
*/
var execute = function() {
console.log("Qux is done");
};
/**
start description
@method start
*/
self.start = function() {
setTimeout(execute, 1000);
};
return self;
}());
क्या आपने कक्षाओं को अलग-अलग फ़ाइलों में डालने का प्रयास किया है? –
नहीं, लेकिन मुझे नहीं लगता कि प्रलेखन को प्रोजेक्ट लेआउट को लागू करना चाहिए। मुझे संदेह है कि मेरे कोड में, 'माईनेस्पेस' वास्तव में मॉड्यूल है और 'फू', 'बाजमैनगर' और 'क्यूक्स' सभी 'कक्षा' हैं। – Andrew
हाँ, मुझे लगता है कि आपकी टिप्पणी का जवाब है। देखें कि यूयूआई डॉक्टर [सिंटैक्स रेफरी] (http://yui.github.com/yuidoc/syntax/index.html) में मॉड्यूल के बारे में क्या कहता है: इसे प्रति स्रोत पेड़ के लिए एक मॉड्यूल की आवश्यकता होती है और यह कभी-कभी स्पष्ट नहीं होता कि क्या है एक मॉड्यूल MyNameSpace को मॉड्यूल और नामस्थान होने दें? –