文档注释

本来以为单行和多行注释没啥好学的,本文只想了解下【文档注释】。写到最后发现,如何优雅的注释本身,也是门大学问。

定义

Java普通注释格式

1
2
3
4
//

/*
*/

Java文档注释格式

1
2
3
/**
@xxx
*/

文档注释主要用于生成javadoc文件的,便于我们对所写的类、方法等进行解释。支持HTML格式。

文档注释目标

https://blog.csdn.net/weixin_39190897/article/details/81880411#/

1
2
3
4
5
6
7
8
9
1类注释类注释用于说明整个类的功能特性等它应该放在所有的import语句之后在class定义之前这个规则也适用于接口interface注释

2方法注释方法注释用来说明方法的定义比如方法的参数返回值及说明方法的作用等方法注释应该放在它所描述的方法定义前面

3属性注释默认情况下javadoc只对公有public属性和受保护属性protected产生文档——通常是静态常量

4包注释方法属性的注释都直接放到Java的源文件中而对于包的注释无法放到Java文件中去只能通过在包对应的目录中添加一个package.html的文件来达到这个目的当生成HTML文件时package.html文件的和部分的内容将会被提取出来当做包的说明关于包注释后面还会有更进一步的解释

5概要注释除了包注释外还有一种类型的文档无法从Java源文件中提取就是对所有类文件提供概要说明的文件同样的也可以为这类注释单独新建一个HTML文件这个文件的名字为overview.html”,它的和标记之间的内容都会被提取

文档注释格式

  • 概要描述:一段话简要描述基本内容
  • 详细描述:几大段描述 功能 和 相关情况
  • 文档标注:参数、作者、返回值等

注释标签释义

可参考 https://www.runoob.com/java/java-documentation.html#/

常见的例如:

1
2
3
4
5
6
7
@author 作者
@param 输入参数
@return 返回参数
@exception 异常
@throws 同exception
@deprecated 指明一个过期的类或成员不推荐使用的方法
@version 版本

javadoc 工具

参考 https://www.cnblogs.com/codepeace/archive/2021/04/30/14722083.html#/

生成的 index.html 文件,就是我们想要的

多说两句

一般IDE都有提供可以自定义文档注释模板的地方,可以定义适合自己的格式,一劳永逸

有需要的话,可以自己定义文档注释标签

注释侧重WHY,而不是HOW

注释要优雅 https://zhuanlan.zhihu.com/p/41127713#/ ,例如下面的文档注释:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    /**
     * <p>Checks if CharSequence contains a search character, handling {@code null}.
     * This method uses {@link String#indexOf(int)} if possible.</p>
     *
     * <p>A {@code null} or empty ("") CharSequence will return {@code false}.</p>
     *
     * <pre>
     * StringUtils.contains(null, *)    = false
     * StringUtils.contains("", *)      = false
     * StringUtils.contains("abc", 'a') = true
     * StringUtils.contains("abc", 'z') = false
     * </pre>
     *
     * @param seq  the CharSequence to check, may be null
     * @param searchChar  the character to find
     * @return true if the CharSequence contains the search character,
     *  false if not or {@code null} string input
     * @since 2.0
     * @since 3.0 Changed signature from contains(String, int) to contains(CharSequence, int)
     */    
     public static boolean contains(final CharSequence seq, final int searchChar) {
        if (isEmpty(seq)) {
            return false;
        }
        return CharSequenceUtils.indexOf(seq, searchChar, 0) >= 0;
    }

关于注释的其他

1 巧用标记

  • TODO 有未完成的事项
  • FIXME 代码有已知问题待修复
  • HACK 表示代码有hack逻辑

参考链接

https://www.cnblogs.com/codepeace/archive/2021/04/30/14722083.html#/

https://zhuanlan.zhihu.com/p/41127713#/