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方法的最后一部分,聚焦为导出的API编写文档注释。 如果要想使得API真正可用,配套的文档是必须的。Java提供了Javadoc这个文档生成工具&…...

TCP四大拥塞控制算法总结
四大算法:1.慢启动,2.拥塞避免,3.拥塞发生,4.快速恢复。 慢启动: 首先连接建好的开始先初始化拥塞窗口cwnd大小为1,表明可以传一个MSS大小的数据。 每当收到一个ACK,cwnd大小加一,…...
深入解析ElasticSearch从基础概念到性能优化指南
一.引言 ElasticSearch是一个分布式的搜索和分析引擎,专为处理大规模的结构化和非结构化数据而设计。它建立在Apache Lucene之上,提供了强大的全文搜索能力、高可用性和实时分析的功能。无论是作为日志分析平台,还是作为数据驱动的应用程序的…...
git分支合并时忽略指定文件
分支合并忽略特定文件步骤 1.在项目根目录下cmd窗口运行以下命令 git config merge.ours.driver true2.在项目根目录下新建文件.gitattributes然后文件中写入需要忽略的文件名 mergeours, 一个文件占一行 Dockerfile mergeours /nginx/default.conf mergeours...

基于微信小程序的童装商城的设计与实现+ssm(lw+演示+源码+运行)
童装商城小程序 摘 要 随着移动应用技术的发展,越来越多的用户借助于移动手机、电脑完成生活中的事务,许多的传统行业也更加重视与互联网的结合,由于城镇人口的增加,人们去商场购物总是排着长长的队伍,对于时间紧的人…...
什么叫后验分布
后验分布(Posterior Distribution)是在贝叶斯统计中一个重要的概念。它指的是在观测到数据之后,对参数或潜变量的分布的更新。具体来说,后验分布是基于先验分布(Prior Distribution)和似然函数(…...

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

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

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

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

胤娲科技:谷歌DeepMind祭出蛋白质设计新AI——癌症治疗迎来曙光
在科技的浩瀚星空中,DeepMind的“阿尔法”家族总是能带来令人瞩目的璀璨光芒。这一次,它们再次以惊人的姿态, 将AI的触角深入到了生命的微观世界——蛋白质设计领域,为我们描绘了一幅未来医疗的宏伟蓝图。 想象一下,一…...
【后端】【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:输入/输入函数 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电子书下载
《财富之眼:用经济思维看清世界》pdf电子书下载 内容简介 一切社会现象都是经济现象,我们只能赚到自己认知范围内的 钱。我国社会主要矛盾已经转化为人民日益增长的美好生活需要和不 平衡不充分的发展之间的矛盾,其中“不平衡不充分”很大程…...
QT中文乱码
文章目录 方法一方法二 方法一 fromLocal8Bit() 可以把中文转为Unicode eg:QString str QString::fromLocal8Bit(“中文简体”); 方法二 预处理,根据设置的本地字符集转换,能正确转换含有中文的QString。 #pragma execution_character_set("u…...

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

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

14 vue3之内置组件trastion全系列
前置知识 Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡: 条件渲染 (使用 v-if)条件展示 (使用 v-show)动态组件组件根节点 自定义 transition 过度效果,你需要对transition组件的name属性自定义。…...
力扣(leetcode)每日一题 LCR 187 破冰游戏(还是考的约瑟夫环)
题干 社团共有 num 位成员参与破冰游戏,编号为 0 ~ num-1。成员们按照编号顺序围绕圆桌而坐。社长抽取一个数字 target,从 0 号成员起开始计数,排在第 target 位的成员离开圆桌,且成员离开后从下一个成员开始计数。请返回游戏结束…...

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…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...

Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...