8. 注释规约
1.【强制】 类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用 //xxx 方式。
说明:在 IDE 编辑窗口中,Javadoc 方式会示相关注释,生成 Javadoc 可以正确输出相应注释; 在 IDE 中,工程调用方法时,不进入方法即可悬浮 示方法、参数、返回值的意义,提高阅读效率。
2.【强制】 所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、 异常说明外,还必须指出该方法做什么事情,实现什么功能。
说明:对子类的实现要求,或者调用注意事项,请一并说明。
3.【强制】 所有的类都必须添加创建者和创建日期,创建者使用 名称<email>作者统一使用拼音全称的驼峰。
/**
* 用户数据模型
* @author YangJian<yangj@pvc123.com>
* @date 2017-06-18
*/
public class User {}
4.【强制】 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释 使用/* */注释,注意与代码对齐。
5.【强制】 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
6.【强制】 与其用“半吊子”英文来注释,不如用中文注释把问题说清楚。但是专有名词与关键字保持。
反例: “TCP 连接超时”解释成“传输控制协议连接超时”,理解反而费脑筋。
7.【强制】 代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑 等的修改。
说明:代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后, 就失去了导航的意义。
8.【强制】 合理处理注释掉的代码。在上方详细说明,而不是简单的注释掉。如果无用,则删除。
说明: 代码被注释掉有两种可能性:
1) 后续会恢复此段代码逻辑。
2) 永久不用。
前者如果没 有备注信息,难以知晓注释动机。后者建议直接删掉(代码仓库保存了历史代码)。
9.【强制】 对于注释的要求:
第一、能够准确反应设计思想和代码逻辑;
第二、能够述业务含义,使别的程序员能够迅速了解到代码背后的信息。完全没有注释的大段代码对于阅读者形同天书,注释是给自己看的,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看的,使其能够快速接替自己的工作。
10.【强制】 好的命名、代码结构是自解释的,注释力求精简准确、表达到位。避免出现注释的 一个极端:过多过滥的注释,代码的逻辑一旦修改,修改注释是相当大的负担。
反例:
// put elephant into fridge
put(elephant, fridge);
//方法名 put,加上两个有意义的变量名 elephant 和 fridge,已经说明了这是在干什么,语
//义清晰的代码不需要额外的注释。
常见标签用处用途:
- @author 作者名称。每一个作者各有一个标记。
- @deprecated 类编程接口 (API)已被废弃。
- @date 日期
- @exception name description 由方法发出的异常。一个异常采用一个标记,并 要给出异常的完整类名。
- @param name 参数名的描述方法,用来说明传递给一个方法的参数,其中包括参 数的类型/类和用法。每个参数各有一个标记。
- @return 方法返回值的描述,若方法有返回值
- @since 例如: since JDK 1.1:说明自从有 JDK 1.1 以来,该项已存在多长时间。
- @see ClassName#member functionName 在文档中生成指向特定方法的超文本链 接。可以并且应该采用完全合法的类名。
- @version 版本号,说明特定一段代码的版本信息。