标准 Java 约定是使用完全的英文描述符,所有单词的第一个字母要大写,并且单词中大小写混合。类名应是单数形式。
举例:
Customer
Employee
Order
OrderItem
FileStream
String
以下的信息应写在文档注释中紧靠类的定义的前面:
1. 类的目的。开发者需要了解一个类的一般目的,以判断这个类是否满足他们的需求。养成一个注释与类有关的任何好东西的习惯,例如:它是否是一个模式的一部分,或是使用它时有什么要引起注意的限制。
2. 已知的问题。如果一个类有任何突出的问题,应说明出来,让其他的开发者了解这个类的缺点/难点。此外,还应注明为什么不解决问题的原因。注意:如果问题仅仅针对一个成员方法,那么它应直接与那个成员方法相联系。
3. 类的开发/维护历史。通常要包含一个历史记录表,列出日期、类的作者和修改概要。这样做的目的是让进行维护的程序员了解过去曾对一个类所做的修改,是谁做了什么样的修改。
4. 注释出采用的不变量。不变量是指一套有关实例或类在所有“稳定”时间片内为“真”的声明。“稳定时间片”是指在一个成员函数被对象/类调用之前和立刻调用之后的时间。通过说明一个类的不变量,你让其他的开发者了解应该如何使用一个类。
5. 并行策略。任何采用 Runnable 接口的类应充分说明它的并行策略。对许多程序员来说,并行编程是一个新的而且复杂的题目,所以需要投入一些额外的时间来确保人们能够读懂你的东西。说明你的并行策略以及为什么选取这个策略而不是其它策略这很重要。常用的并行策略 包括下面一些内容:同步对象;停滞 (balking) 对象;警戒 (guarded) 对象;版本 (versioned) 对象;同步策略控制器;接收器。
例:
/**
* A class representing a window on the screen.
* For example:
* <pre>
* Window win = new Window(parent);
* win.show();
* </pre>
*
* @see awt.BaseWindow
* @see awt.Button
* @version 1.2 2004-4-9
* @author wangxie
**/
class Window extends BaseWindow {
...
}
在接口名前加前缀“I”。建议在一个接口名的前面附加上字母“I”,结果使名字变为如 ISingleton 或 IRunnable 这样。这种方法有助于将接口名与类和包的名字区分开来。
以下的信息应写在文档注释中紧靠接口定义的前面:
Ø 目的。在其他开发者应用一个接口之前,他们需要理解接口封装的概念。换句话说,他们需要了解接口的目的。一个好的检测是否有必要定义一个接口的方法是你是否可以很容易地说明它的目的。 如果说明起来有困难,很可能从一开始起就不需要这个接口。在 Java 中接口的概念较新,所以人们对如何正确使用它们还不是很有经验,常常滥用它们。
Ø 它应如何被使用以及如何不被使用。开发者需要了解接口应如何使用以及如何不被使用。
因为成员方法的标识在接口中定义,所以对于每个成员方法的标识应遵循2.7中的注释约定
关于包的命名有几条规则。按顺序来说,这些规则是:
Ø 标识符用点号分隔开来。为了使包的名字更易读,Sun 公司建议包名中的标识符用点号来分隔。例如,包名 java.awt 含有两个标识符 java 和 awt。
Ø Sun 公司的标准 java 分配包用标识符 .java 开头。Sun 保有这种权利,使得无论你的 Java 开发环境的零售商是怎样的,标准 java 包的命名始终一致。
Ø 局部包的名字中的第一个标识符不能都是大写。所谓局部包是指那些在你的机构内部使用,不会应用到其他机构中去的包。这样的包的名字的例子有 persistence.mapping.relational 和interface.screens。
Ø 全局包的名字用你的机构的 Internet 保留域名开头。一个要应用到多个机构的包应包含创建机构的域名,并且最高层的域名类型要大写。
应保证有一个或者多个外部文档以说明你的机构所创建的包的用途。对于每个包,应说明:
Ø 包的基本原理。其他开发者需要了解一个包是用来做什么的,这样他们才能判断是否可以用它,如果是一个共享包,他们可以判断是否需要改进或是扩展它。
Ø 包中的类。在包中要包含一个类和接口的列表,每个类或接口用简短的一行文字来说明,以便让其他的开发者了解这个包中含有什么。
编译单元,在这个情况下是一个源码文件,应被赋予文件内定义的主要的类或接口的名字。用与包或类相同的名字命名文件,大小写也应相同。扩展名 .java 应作为文件名的后缀。
例:
Customer.java
Singleton.java
SavingsAccount.java
虽然应努力使一个文件中只包含一个类或接口,但是有时在一个文件中定义数个类(或者接口)也可理解。一般的经验规则是,如果类 B 的唯一用途是封装只被类 A 需要的功能,那么可以理解类 B 出现在与类 A 相同的源码文件中。下面的文档约定应用于一个源码文件,而不具体到类:
Ø 对于有几个类的文件,列出每一个类。如果一个文件包含多个类,则应给出一个类的列表,并且简要地说明每个类。
Ø 文件名和/或标识信息。文件名应包含在它的顶端。好处是如果代码被打印出来了,你会知道源码文件是什么。
Ø 版权信息。若可能,应说明文件的所有版权信息。通常的做法是说明版权的年份和版权持有个人/机构的名字。注意:代码的作者可能不是版权持有者。