2MUCH

文档注释

2022-06-30


文档注释

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

定义

Java普通注释格式

//
或
/*
*/

Java文档注释格式

/**
@xxx
*/

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

文档注释目标

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

(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#/

常见的例如:

@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#/ ,例如下面的文档注释:

    /**
     * <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 巧用标记

参考链接

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

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