当前位置: 首页 > news >正文

Effective Java 学习笔记 如何为方法编写文档

目录

方法的文档注解设计的原则

Javadoc常用的文档注释

一些注意细节

通过Javadoc命令生成h5页面


这是第8章Java方法的最后一部分,聚焦为导出的API编写文档注释。

如果要想使得API真正可用,配套的文档是必须的。Java提供了Javadoc这个文档生成工具,极大的减轻了开发人员写文档的工作量。Javadoc可用利用对应的文档注释,根据源代码自动生成API文档(一个H5页面)。

方法的文档注解设计的原则

方法的文档注解应该能够简洁地描述出它和客户端之间的约定。除了专门为继承而设计的类中的方法,文档应该说明该方法做了什么,它应该列举出方法使用的所有前置条件(客户在调用这个方法之前需要满足的条件,这个条件一般需要通过@throws标签针对未受检异常进行表述)、后置条件(在调用完成后,哪些条件要满足)以及副作用(对于系统中其他部分的影响)。

Javadoc的注解一般声明在类、方法或者接口的开头之前,下面重新举一下第一篇文章里PositiveDivideTest的例子:

package test;public class PositiveDivideTest {public static void main(String[] args) {System.out.println(divide(10, 3));System.out.println(mode(10, 3));}/*** Returns a int whose value is divident divide divisor,* this method is used for positive number only* if {@literal dividend or divisor <=0}, throw ArithmeticException* @param dividend* @param divisor* @throws ArithmeticException if {@literal dividend or divisor <=0}* @return dividend divide divisor*/public static int divide(int dividend, int divisor){if(dividend<=0||divisor<=0){throw new ArithmeticException("dividend or divisor <=0");}return dividend / divisor;}/*** Returns a int whose value is dividend mod divisor* this method is used for positive number only* if {@literal dividend or divisor <=0}, throw ArithmeticException* @param dividend* @param divisor* @throws ArithmeticException if {@literal dividend or divisor <=0}* @return dividend mod divisor*/public static int mode(int dividend, int divisor){int quo = divide(dividend, divisor);return dividend - quo * divisor;}
}

注解由/** */进行声明(注意不要写成/* */),第一句话是概要描述,对于方法和构造器来说,概要描述应该是一个完整的动词短语,它描述了该方法所执行的动作。 

Javadoc常用的文档注释

先介绍一下Javadoc有哪些常用的文档注释,Javadoc根据这些注释能够生成什么特定的文档解释。

注解解释标准写法
@param注解方法的输入参数一个名词短语,描述这个参数所表示的值
@throws注解方法所抛出的异常应该包含单词"if",紧接着一个名次短语,描述这个异常将在什么样的条件下抛出。
@return注解方法的返回值一个名词短语,描述这个返回值所表示的值
@literal注解一些特殊字符(包含html元字符,如果不注释会报错)用{@literal}将相关字符包裹起来
@code注解一段代码

用{@code}将相关代码包裹起来

@implSpec在接口的方法注释中描述具体的实现细节,或者在父类方法中注解其自用模式下的语义说明该方法的的目的以及默认实现细节,为继承类或者实现类使用者提供便利

一些注意细节

同一个类或者接口中的两个成员或者构造器,不应该具有相同的概要描述:尤其是重载的情况,要注意区分,至少要说明两者的区别在哪里。

尽量不要使用句点:因为句点加空格会提前终止描述,如果一定要使用请用{@literal}标签包裹起来。

当为泛型或者方法编写文档时,确保要在文档中说明所有的类型参数:

/****@param <K> the type of keys maintained by the map*@param <V> the type of mapped values*/

枚举类型也一样,要对每一个常量做充足的说明。

为注解类型编写文档时,要确保在文档中说明所有成员:这个要求和方法一样。

静态方法的线程安全性需要在文档中进行说明。

通过Javadoc命令生成h5页面

在对方法进行注解后,可以通过Javadoc命令生成注解文档:

(base) MacBook-Pro:chapter8$ javadoc -d docs -sourcepath . -subpackages test
  • -d docs 指定输出目录为 docs
  • -sourcepath . 指定源代码路径为当前位置
  • -subpackages test 为路径下要处理的包名。

在命令运行后会成功生成docs文件夹:

其中的index.html就是对应的文档页面:

 

相关文章:

Effective Java 学习笔记 如何为方法编写文档

目录 方法的文档注解设计的原则 Javadoc常用的文档注释 一些注意细节 通过Javadoc命令生成h5页面 这是第8章Java方法的最后一部分&#xff0c;聚焦为导出的API编写文档注释。 如果要想使得API真正可用&#xff0c;配套的文档是必须的。Java提供了Javadoc这个文档生成工具&…...

TCP四大拥塞控制算法总结

四大算法&#xff1a;1.慢启动&#xff0c;2.拥塞避免&#xff0c;3.拥塞发生&#xff0c;4.快速恢复。 慢启动&#xff1a; 首先连接建好的开始先初始化拥塞窗口cwnd大小为1&#xff0c;表明可以传一个MSS大小的数据。 每当收到一个ACK&#xff0c;cwnd大小加一&#xff0c…...

深入解析ElasticSearch从基础概念到性能优化指南

一.引言 ElasticSearch是一个分布式的搜索和分析引擎&#xff0c;专为处理大规模的结构化和非结构化数据而设计。它建立在Apache Lucene之上&#xff0c;提供了强大的全文搜索能力、高可用性和实时分析的功能。无论是作为日志分析平台&#xff0c;还是作为数据驱动的应用程序的…...

git分支合并时忽略指定文件

分支合并忽略特定文件步骤 1.在项目根目录下cmd窗口运行以下命令 git config merge.ours.driver true2.在项目根目录下新建文件.gitattributes然后文件中写入需要忽略的文件名 mergeours, 一个文件占一行 Dockerfile mergeours /nginx/default.conf mergeours...

基于微信小程序的童装商城的设计与实现+ssm(lw+演示+源码+运行)

童装商城小程序 摘 要 随着移动应用技术的发展&#xff0c;越来越多的用户借助于移动手机、电脑完成生活中的事务&#xff0c;许多的传统行业也更加重视与互联网的结合&#xff0c;由于城镇人口的增加&#xff0c;人们去商场购物总是排着长长的队伍&#xff0c;对于时间紧的人…...

什么叫后验分布

后验分布&#xff08;Posterior Distribution&#xff09;是在贝叶斯统计中一个重要的概念。它指的是在观测到数据之后&#xff0c;对参数或潜变量的分布的更新。具体来说&#xff0c;后验分布是基于先验分布&#xff08;Prior Distribution&#xff09;和似然函数&#xff08;…...

Godot游戏如何提升触感体验

在游戏世界中&#xff0c;触感体验至关重要&#xff0c;既能极大提升玩家沉浸感&#xff0c;让其深度融入游戏&#xff0c;在操作角色或与环境互动时&#xff0c;通过触感反馈获得身临其境的真实感&#xff08;比如动作游戏中角色攻击或受击时的振动反馈&#xff0c;能使玩家更…...

数字图像面积计算一般方法及MATLAB实现

一、引言 在数字图像处理中&#xff0c;经常需要获取感兴趣区域的面积属性&#xff0c;下面给出图像处理的一般步骤。 1.读入的彩色图像 2.将彩色图像转化为灰度图像 3.灰度图像转化为二值图像 4.区域标记 5.对每个区域的面积进行计算和显示 二、程序代码 %面积计算 cle…...

【STL】 set 与 multiset:基础、操作与应用

在 C 标准库中&#xff0c;set 和 multiset 是两个非常常见的关联容器&#xff0c;主要用于存储和管理具有一定规则的数据集合。本文将详细讲解如何使用这两个容器&#xff0c;并结合实例代码&#xff0c;分析其操作和特性。 0.基础操作概览 0.1.构造&#xff1a; set<T&…...

xhs 小红书 x-s web 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…...

胤娲科技:谷歌DeepMind祭出蛋白质设计新AI——癌症治疗迎来曙光

在科技的浩瀚星空中&#xff0c;DeepMind的“阿尔法”家族总是能带来令人瞩目的璀璨光芒。这一次&#xff0c;它们再次以惊人的姿态&#xff0c; 将AI的触角深入到了生命的微观世界——蛋白质设计领域&#xff0c;为我们描绘了一幅未来医疗的宏伟蓝图。 想象一下&#xff0c;一…...

【后端】【nginx】nginx常用命令

文章目录 1. 启动与停止相关命令2. 配置文件检查与验证3. 查看日志4. 查看状态与版本5. 端口与连接相关命令 1. 启动与停止相关命令 # 启动 NGINX sudo nginx# 立即停止 NGINX sudo nginx -s stop# 优雅停止 NGINX sudo nginx -s quit# 优雅重载配置 sudo nginx -s reload# 完…...

MATLAB系列08:输入/输入函数

MATLAB系列08&#xff1a;输入/输入函数 8. 输入/输入函数8.1 函数textread8.2 关于load和save命令的进一步说明8.3 MATLAB文件过程简介8.4 文件的打开和关闭8.4.1 fopen函数8.4.2 fclose函数 8.5 二进制 I/O 函数8.5.1 fwrite 函数8.5.2 fread函数 8.6 格式化 I/O 函数8.6.1 f…...

《财富之眼:用经济思维看清世界》pdf电子书下载

《财富之眼&#xff1a;用经济思维看清世界》pdf电子书下载 内容简介 一切社会现象都是经济现象&#xff0c;我们只能赚到自己认知范围内的 钱。我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不 平衡不充分的发展之间的矛盾&#xff0c;其中“不平衡不充分”很大程…...

QT中文乱码

文章目录 方法一方法二 方法一 fromLocal8Bit() 可以把中文转为Unicode eg:QString str QString::fromLocal8Bit(“中文简体”); 方法二 预处理&#xff0c;根据设置的本地字符集转换&#xff0c;能正确转换含有中文的QString。 #pragma execution_character_set("u…...

如何安装1Panel面板并架设一个静态网站

我们通常要架设网站在vps上&#xff0c;就要用到面板&#xff0c;一般是宝塔&#xff0c;但这个面板收费项目较多&#xff0c;用着不太方便。相比宝塔面板&#xff0c;1panel面板是国内功能强大、操作简单、免费易学的Linux服务器管理面板。我们还可以使用一键代码来安装这个面…...

craco-less使用问题

craco-less使用问题 问题背景 前端是用React搭建&#xff0c;使用craco配置&#xff0c;相关库或插件版本如下 "craco/craco": "^7.1.0","react-scripts": "^5.0.1","craco-less": "^3.0.1"在生产环境&#xff…...

14 vue3之内置组件trastion全系列

前置知识 Vue 提供了 transition 的封装组件&#xff0c;在下列情形中&#xff0c;可以给任何元素和组件添加进入/离开过渡: 条件渲染 (使用 v-if)条件展示 (使用 v-show)动态组件组件根节点 自定义 transition 过度效果&#xff0c;你需要对transition组件的name属性自定义。…...

力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)

题干 社团共有 num 位成员参与破冰游戏&#xff0c;编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target&#xff0c;从 0 号成员起开始计数&#xff0c;排在第 target 位的成员离开圆桌&#xff0c;且成员离开后从下一个成员开始计数。请返回游戏结束…...

nginx模块篇(四)

文章目录 四、Nginx的扩展模块4.1. Lua4.1.1 概念4.1.2 特性4.1.3 应用场景4.1.4 Lua的安装4.1.5 Lua的语法4.1.5.1 第一个Lua程序4.1.5.2 Lua的注释4.1.5.3 标识符4.1.5.4 关键字4.1.5.5 运算符4.1.5.6 全局变量&局部变量4.1.5.7 Lua数据类型nilbooleannumberstringtablef…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...