众所周知,文档编制在软件项目中是一个至关重要的部分。它贯穿整个项目并应该得到足够的维护。不幸地是,一个文档的编制很复杂,需要耗费大量的时间,所以它成为了软件开发人员的负担,这样就使文档编制变得不完整并且不能和程序同步修改。源代码文档编制是整个代码进程中一个重要的一部分,在这个进程中,需要利用到javadoc工具。利用一个简单的文本编辑器和一个正确的项目目录结构,这个工具可以帮助你加速和改善代码文档编制。
项目目录结构 一个正常的软件项目有一系列的文档,比如需求,规格说明,测试和一个和系统开发人员工作有关的集成计划。让我们来看看一个适合开发项目的典型的目录结构:
/prj-1
/classes
/doc
/resources
/spec
/src
spec.html
/class目录存储编译Java类文件,/dos有文档编制,/resources是项目资源,/spec是项目文档编制,/src是Java源文件。Spec.html是一个映射文件,我将在后面讨论它。
或者,这个目录结构可以象下面这样编写,此时,和项目相关的文档编制被放置在比源代码更高一级的地方。
/prj-2
/code
/classes
/doc
/resources
/src
spec.html
/spec
这种结构的好处就是它很容易的被封装,因而可以从/src目录中设置地址,源文件被存放在这个目录中,这两个结构都可以正常的工作。在这篇文章下面的例子中,我们使用第一种目录结构。
使用目录结构 假设你已经完成了一个算法,这个算法在规格说明中进行了彻底地解释,现在你想要文档编制这个代码。你可以提供一个连接,使它连接说明的原始地方,这样就替代了重复的解释算法。这样就使代码编制变得更快,它不需要复写原始信息并可以同步的保持代码内容。
源文件和项目文档的连接被放置在/spec目录中,你需要利用HTML和Javadoc来创建这个连接。连接可以指向存储于不同格式的文档,这些格式可以通过你的浏览器被浏览。
/**
* Process a customer order according to the
* <a href="../spec/specification.html#cust-order-proc">specification</a> and
* <a href="../spec/requirements.rtf">requirements</a>
*/
public void processCustomerOrder() {
...
}
/**
* Creates and sends
* <a href="../spec/specification.html#cust-order-diag-resp">
* a response message</a> according to
* <a href="../spec/specification.html#cust-order-diag">a customer request</a>
*/
public void generateCustomerResponse() {
}
如果文档编制和源代码一起都是分布式的,那么使用这个方法是非常有效的。但是,如果这样做,源代码的注释将要加上一个特别的文档编制名和它的位置,改变它们中任何一个其他的也要改变。
为了纠正这个确定,你仅仅需要在源代码和特殊文档中的连接提供一个映射,这个过程通过映射文件可以非常简单的完成。比如,spec.html包含了在源代码中连接用户名和文档中实际名之间的映射。你可以看看下面这个例子:
/**
* Performs a complex calculation according to the
* <a href="../spec.html#algorithm-1">algorithm</a>
*/
public void doComplexCalculation() {
…
spec.html文件包含了下面的映射:
<a name="algorithm-1">
<a href="spec/algorithms.html#1">Algorithm 1</a>
</a>
</p>
<p>
<a name="ant-ref">
<a href="http://ant.apache.org">Apache Ant Java-based build tool</a>
</a>
</p>
<p>
<a name="common-properties">
<a href="resources/prj-1.properties">Common Properties</a>
连接程序表 我们来看看另外一个例子,你需要一个地方来连接外部文档到你的源代码中,你想要的位置在更高级别设计文档,包括使用范例或者程序表。当你想要指定系统通信,交互作用或者和其他系统接口的时候,程序表是非常有用的。不幸地的是,你不能自动的在程序表中产生代码,也不能在程序表中重新设计源代码。因此,你需要同时保持程序表和源代码。如果你连接了一个程序表,这个过程就变得简单多了。比如,在这两个参与者中传递消息。假设你的程序表是简单的ASCII程序表,你可以按下面的步骤创建anchor:
Customer Processor
-------- ---------
| |
| OrderRequest |
|-------------------------------------------------> |
| |
| |
| |
| |
| <a name="cust-order-diag-resp">OrderResponse</a> |
|<------------------------------------------------- |
| |
接着,通过spce.html连接映射文件。
象上面这种方式安排文档编制的进程是比较简单,合理的。因为它仅仅需要一个文本编辑器和Javadoc工具。