diff --git a/Java文档注释规范倡议.md b/Java文档注释规范倡议.md new file mode 100644 index 0000000..8fcefc6 --- /dev/null +++ b/Java文档注释规范倡议.md @@ -0,0 +1,187 @@ +# Java文档注释规范倡议 + +## 什么是文档注释 + +> 以`/**`开头的就是文档注释,它只可出现在类头,方法头,类成员头上。这种注释会被maven打包后保留,且受JavaDoc与IDE识别。可以进行更为格式化的表现。 + +## 为什么要写好文档注释,文档注释有什么优势 + +### 1、文档注释受IDE识别,能提高编写代码的速度 + +我们使用IDEA编写代码时,调用到一个写了文档注释的方法。我们可以通过`Ctrl+Q`打开对应的文档注释。从而避免在调用方法时,需要打开该方法的代码页,导致两页代码翻来翻去导致思路打乱的情况。如图: + +![JavaDoc](https://cloud.qiniu.lroyia.top/blog/img/JavaDoc1.jpg) + +### 2、JavaDoc可以识别文档注释生成Java类文档 + +### 3、接口API文档框架JApiDocs可以识别 + +[JApiDocs](https://github.com/YeDaxia/JApiDocs)是一个基于文档注释生成API文档框架。它比起Swagger,可以避免单行内太多注解,或注解内容太长而导致代码臃肿难看的情况。 + +## 如何写好基本的文档注释 + +在写好方法声明后,在方法头输入“/**”后按回车,即可自动生成对应的文档模版,输入对应的内容即可。 +正例: +![JavaDoc1](https://cloud.qiniu.lroyia.top/blog/img/JavaDoc2.jpg) +![JavaDoc](https://cloud.qiniu.lroyia.top/blog/img/JavaDoc1.jpg) +反例: +![JavaDoc3](https://cloud.qiniu.lroyia.top/blog/img/JavaDoc3.jpg) +反例不可被JavaDoc识别 +![JavaDoc4](https://cloud.qiniu.lroyia.top/blog/img/JavaDoc4.jpg) + +## 文档注释基本格式以及常用注解详解 + +### 一、基本格式 + +```Java +/** + * 12315初查反馈延期 + * @param targetUser 回填用户 {@link AICUser} + * @param caseguid 工单caseguid + * @param regId 工单号 + * @param formType 表单类型 + * @param prevDate 延期前日期 {@link java.util.Date} + * @param delayDate 延期日期(延期至该日期){@link java.util.Date} + * @return 回填结果 + * @author lroyia + * @since 2020年11月20日 14:07:48 + */ +FeedbackResultDto acceptDelay(AICUser targetUser, String regId, String caseguid, String formType, Date prevDate, Date delayDate); +``` + +一般文档注释以下面的顺序进行编写 + +#### 1、方法描述 + +方法描述必须写在所有注解文档描述的前面,不然不会被识别 + +#### 2、参数说明 + +使用`@param`进行参数描述 +使用格式: + +```java +@param 参数名 参数描述 +``` + +#### 3、返回说明 + +使用`@return` 进行返回内容标识 +使用格式: + +```java +@return 返回描述 +``` + +#### 4、异常抛出说明 + +使用`@throws`或`@exception`进行异常说明 +`@throws`与`@exception`注解均为异常注释注解,两者是同义词,作用一致 +使用格式: + +```java +@throws 方法抛出的异常类名 异常描述 +@exception 方法抛出的异常类名 异常描述 +``` + +#### 5、作者说明 + +使用`@author`进行作者标识 +使用格式: + +```java +@author 作者名称 +``` + +#### 6、编写时间 + +使用`@since`进行编写时间标识,`@since`常用于标识方法从哪个版本开始编写,因为公司没有严格,细粒度的项目版本控制,所以暂时使用该注解进行时间描述 +使用格式: + +```java +@since 时间描述 +``` + +### 二、常用注解详解 + +#### 1、@code + +`@code`是用于文档中的代码格式化转义,相当于在文档中使用``标签 +使用格式: + +```java +{@code 修饰内容} +``` + +#### 2、@link + +`@link`是用于进行档内文件超链接,常用语修饰一些方法对项目中相关的文件的连接。例如,方法使用了某个枚举,我们就可以在文档中使用`@link`生成对应枚举类的超链接,这样阅读者就可以直接点击文档中的超链接跳到对应的枚举类中。 +使用格式: + +```java +{@link 类名#方法名(参数名)} +``` + +#### 3、@see + +`@see`是类文档引用注解,它与`@link`相似。但两者行为和注解位置不同。`@code`和`@link`均为*行内注解*均在`{}`花括号中使用,可在任何描述位置进行扩展修饰。`@see`是*行注解*,需要像`@param`一样占单行。`@link`默认行为是打开目标类指定位置,`@see`默认行为是展示目标的文档注释。 +使用格式: + +```java +@see 类名#方法名(参数名) +``` + +#### 4、@param + +`@param`是专门对方法的参数进行描述的注解,被标识的参数信息会固定出现在文档的参数部位。 +使用格式: + +```java +@param 参数名 参数描述 +``` + +#### 5、@return + +`@return`是专门对方法的返回内容进行描述的注解,被标识的信息会固定出现在文档的返回部位。 +使用格式: + +```java +@return 返回描述 +``` + +#### 6、@throws和@exception + +`@throws`与`@exception`注解均为异常注释注解,两者是同义词,作用一致。在使用异常注释注解前,必须确保方法已使用throws关键字进行了相应的异常抛出声明。 +使用格式: + +```java +@throws 方法抛出的异常类名 异常描述 +@exception 方法抛出的异常类名 异常描述 +``` + +#### 7、@author + +`@author`注解是专门用于标识方法作者的一个注解 +使用格式: + +```java +@author 作者名称 +``` + +#### 8、@since + +`@since`是专门用于标识方法/类的创建版本时间的一个注解。在没有明确的版本划分时,我们可以用来进行标识创建时间。 +使用格式: + +```java +@since 创建时间/版本描述 +``` + +#### 9、@version + +`@version`是专门用来标识当前方法/类的版本的注解,常在开发社区的开源项目中使用,一般公司不会进行。 +使用格式: + +```java +@version 版本号 +```