Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

自动生成你的程序开发文档

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  项目到了尾声,大家都开始头疼——又要写文档了……是的,我们大多数人都不是从正规的Programer训练出来的。当初学习编程序的时候,就从来没有想过要给自己写的那几个程序编写一份完整的文档,所有的注释都仅仅是为了自己当时能够想起这段代码到底是干什么的,没有人想过这些代码的升级、共享问题。但是,开始做商业软件之后,一切都变了,尤其是大型的团队开发项目中。

  大家也许注意到了,java的API文档总是紧紧跟随着JSDK的版本的提高而保持着最新的状态。试想一下,手工维护这么复杂的文档可能吗?当然不可能,这一切都是javadoc这个小程序的功劳(当然也有java类库作者们做程序注释的一份功劳)。API文档就是用它根据最新的源代码自动生成的,一切都是这么容易——只需要你把本来就要写的注释写得更规范一些,再稍微详细一些。然而,大家似乎好像根本就没有意识到它的存在,很少有人会用它来为自己的程序生成文档。不知道,你现在是否对它有了兴趣?好吧,下面我们就开始这个令人轻松的自动文档生成之旅。

  【如何插入注释】

  JAVADOC为你生成代码不是凭空来的,也不是它会自动分析你的代码——每个人都有自己的代码风格,如果要进行分析翻译恐怕还是机器码更容易生成百倍。它的分析机制依赖于你按照规范为你的代码添加应有而足够的注释。只有你老老实实写注释,才有可能把以前需要做双份的工作一次做了。

  Javadoc工具可以从下列对象中提取出信息:

  · 包。

  · 公共类。

  · 公共接口。

  · 公共或者受保护的方法。

  · 公共或者受保护的变量/常数。

  针对每一种特性,你都应该提供一条注释。每一条注释都要以/**打头,以*/结尾。在每条/** …… */文档注释可包括任意格式的文字。,它的第一个句子应该是一个总结性的语句,javadoc会自动把它提出来制作总结页。当然,这里你完全可以使用一些HTML的记号,例如<i>...</i>表示斜体;<tt>...</tt>表示等宽的“打印机”字体;<b>...</b>表示粗体;甚至用<img...>包括一副图象等等。(但是不要使用类似于<h1>的标题格式的标记,或者水平分隔线<hr>等,它们会和文档自己的格式发生冲突)然后在后面接上一些特殊的“标记”。每个标记以@开头,例如@author或者@param等等。

  加入在注释中包含了指向其它文件的其它文件的链接的话(例如你的插图和图片),需要将那些文件放置在名为doc-files的子目录中。javadoc会将这些目录以及其中的文件从源目录复制到文档目录。下面我们分类解释一下我们可能会比较常用的一些标记。

  ■常规注释

  下面这些标记可以在所有文档注释中使用。

  ◇ @since 版本

  该标记可以生成一个注释表明这个特性(类、接口、属性或者方法等)是在软件的哪个版本之后开始提供的。

  ◇ @deprecated 类、属性、方法名等

  这个标记可以增加一条注释,指出相应的类、方法或者属性不再应该使用。javadoc仅将首句复制到概览部分和索引中。后面得句子还可以解释为什么不鼓励使用它。有时候,我们也推荐另外一种解决办法,例如:


@deprecated Use <tt>theAnotherMethod</tt>

  或者使用{@link}标记给一个推荐的连接关于它的使用我们将马上介绍。

  ◇ @see 链接

  这个标记在“See also”(参见)小节增加一个超链接。这里的链接可以是下面几项内容:

  · package.class#member label 添加一个指向成员的锚链接,空格前面是超链接的目标,后面是显示的文字。注意分隔类和它的成员的是#而不是点号,你可以省略包名或者连类名也一块省略,缺省指当前的包和类,这样使注释更加简洁,但是#号不能省略。label是可以省略的。

  · <a href=...>label</a> 这个不用解释了吧。

  · "Text" 这个直接在“See also”中添加一段没有链接的文字。

  ◇ {@link 链接目标 显示文字}

  其实准确的说,link的用法和see的用法是一样,see是把链接单列在参见项里,而link是在当前的注释中的任意位置直接嵌入一段带超级链接的文字。

  ■为类和接口添加注释

  类或者接口的注释必须在所有import语句的后面,同时又要位于class定义的前面。除了上面所说的常规标记以外,你还可以在类注释中使用如下标记:

  ◇ @author 作者名

  当使用author标记时,用指定的文本文字在生成的文档中添加“Author”(作者)项。文档注释可以包含多个@author标记。可以对每个@author指定一个或者多个名字。当然你同样可以使用多个作者标记,但是它们必须放在一块儿。

  ◇ @version 版本

  这个标记建议一个“版本”条目,后面的文字可以是当前版本的任意描述。

  下面是类注释的一个例子:


/**
 * An implementation of a menu bar. You add 
 <code>JMenu</code> objects to the
 * menu bar to construct a menu. When the user selects a 
 <code>JMenu</code>
 * object, its associated <code>JPopupMenu</code> 
 is displayed, allowing the
 * user to select one of the <code>JMenuItems
 < /code> on it.
 * <p>
 * For information and examples of using menu bars see
 * <a href=
 "http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html"
 >How to Use Menus</a>,
 * a section in <em>The Java Tutorial.</em>
 * For the keyboard keys used by this component in the standard Look and
 * Feel (L&F) renditions, see the
 * <a href=doc-files/Key-Index.html#JMenuBar>JMenuBar</a>
 key assignments.
 * <p>
 * <strong>Warning:</strong>
 * Serialized objects of this class will not be compatible with 
 * future Swing releases. The current serialization support is appropriate
 * for short term storage or RMI between applications running the same
 * version of Swing. A future release of Swing will provide support for
 * long term persistence.
 *
 * @beaninfo
 * attribute: isContainer true
 * description: A container for holding and displaying menus.
 *
 * @version 1.85 04/06/00
 * @author Georges Saab
 * @author David Karlton
 * @author Arnaud Weber
 * @see JMenu
 * @see JPopupMenu
 * @see JMenuItem
 */


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Ant实践   下一篇:一个实现排列和组合的JavaBean

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章