Dokumentation von Klassen und Modulen in YUIDocs

8

Ich habe ein paar Probleme damit, meine Dokumentation für eine Reihe von gruppierten Modulen zu schreiben. Ich denke, es ist teilweise ein Missverständnis darüber, was @class , @module und @namespace darstellen. (Oder vielleicht ist es ein Ergebnis von Yahoo, der versucht, ein 'klassisches' Vokabular in JS zu schüren.)

Ich habe unten ein Beispiel, das zeigt, wie der meiste Code geschrieben ist und wie ich ihn im YUIDoc-Stil dokumentiere. Die ersten beiden Teile ( Foo und BazManager ) sind ziemlich einfach. Zu mir:

  • Foo ist ein @class ;
  • Baz ist ein @class ;
  • BazManager ist ein @module (oder vielleicht ein @class , das nur @static members enthält);
  • Qux ist auch ein @module , enthält aber nur Methoden.

Meine Probleme sind:

  1. Wenn BazManager ein @module ist, wird Foo unter BazManager ;
  2. angezeigt
  3. Wenn BazManager ein @class ist, werden die Methoden innerhalb von Baz hineingezogen, wenn Sie nicht @for zu allem hinzufügen;
  4. Wenn BazManager ein @class ist, dann wird die Sichtbarkeit von Baz wirklich schwierig,
  5. Ich weiß wirklich nicht, wie ich Qux dokumentieren soll. Es scheint mir ein Modul zu sein, aber da es keine @class es hat, verschlingt es alles, einschließlich BazManager . Also muss es ein @class sein.

Kann jemand vorschlagen, wie ich das tun sollte? Es ist mir egal, ob die Bedingungen richtig sind, solange alles in der Dokumentation korrekt generiert wird.

Hier ist mein Beispielcode:

%Vor%     
Andrew 14.12.2012, 10:10
quelle

1 Antwort

9

In YUIDoc @class wird sowohl für klassische Klassen als auch für Objekte verwendet, die eine Menge Methoden enthalten. Klassen, die instanziiert werden sollen, sind ebenfalls mit @constructor gekennzeichnet. Das liegt hauptsächlich an der Art und Weise, wie diese Klassen dann in den Vorlagen angezeigt werden. Es ist viel einfacher, eine Klasse aufzuspüren als viele einzelne Funktionen.

Das YUI-Team und viele in der Community (mich eingeschlossen) scheinen sich von @namespace wegzubewegen. Es ist schwer, richtig zu werden. Stattdessen schreiben wir Klassennamen mit Punkten, zB: @class Plugin.NodeMenuNav .

Module sind im YUI-Sinne gemeint und können meist als "Skripte" verstanden werden, die eine oder mehrere Klassen enthalten.

Ein typisches Modul sieht dann so aus:

%Vor%

Schließlich ist @for für Module gedacht, die andere Module erweitern. Zum Beispiel könnten Sie eine Modulleiste haben, die dem Prototyp von Foo Methoden hinzufügt:

%Vor%     
juandopazo 20.12.2012, 15:32
quelle