首页 / 知识
关于不可知的语言:api文档和“值限制”:它们匹配吗?
2023-04-15 06:48:00

api documentation and “value limits”: do they match?您经常在API文档中(例如在"公共函数的javadoc"中)看到"值限制"的描述以及经典文档吗? 注意:我不是在谈论代码中的注释 所谓"价值限制",是指:
样品: 我经常看到的(无法访问源代码)是:
我想看到的是:
我的观点是: 当我在其中使用带有getReaderNames()函数的库时,我通常甚至不需要阅读API文档就可以猜测它的作用。但是我需要确定如何使用它。 当我要使用此功能时,我唯一需要关注的是:就参数和返回值而言,我应该期待什么?这就是我安全设置参数和安全测试返回值所需的全部知识,但是我几乎从来没有在API文档中看到过此类信息... 编辑: 这会影响是否使用已检查或未检查的异常。 你怎么看 ?值限制和API,它们是否属于同一类? 我认为它们可以在一起,但不一定必须在一起。在您的方案中,将限制记录在生成的API文档和智能中(如果语言/ IDE支持)似乎是有意义的。 我认为这也取决于语言。例如,Ada的本机数据类型为"受限整数",您可以在其中定义一个整数变量,并明确指示该变量仅(且始终)在某个数值范围内。在那种情况下,数据类型本身指示限制。通过API文档和智能感知,它仍然应该是可见和可发现的,但是开发人员不必在注释中指定它。 但是,诸如Java和C#之类的语言没有这种类型的受限整数,因此,如果信息应成为公共文档的一部分,则开发人员必须在注释中指定它。 问题1
几乎从不。 问题2
如果我使用的函数不正确,我会期望方法抛出的
在我看来,像
问题3
Java语言没有按合同设计的功能,因此您可能会倾向于使用 我认为这些边界条件绝对属于API。但是,我会(而且经常这样做)更进一步,并指出这些空值的含义。我要么表明它将抛出异常,要么我解释了传递边界值时的预期结果。 很难记住总是这样做,但这对您的班级用户来说是一件好事。如果方法的约定出现变化(例如,将空值更改为不允许),也很难维护它。当您更改方法的语义时,还必须勤奋地更新文档。 @Fire Lancer:对!我忘记了异常,但是我希望看到它们被提及,尤其是此公共方法可能引发的未经检查的"运行时"异常 @迈克·斯通:
嗯,我当然希望,只要发生影响功能约定的更改,就至少要更新公共API文档。如果没有,这些API文档可能会完全删除。 为了使您的想法更加有趣(并使用@Scott Dorman),我偶然发现了Java7注释的未来 那是什么意思?某些"边界条件"(而不是文档中的内容)应该更好地存在于API本身中,并在编译时自动与适当的"断言"生成的代码一起使用。 这样,如果API中有一个'@CheckForNull',该函数的编写者可能甚至不编写文档就逃脱了!而且,如果语义发生变化,其API将反映该变化(例如,"不再有@CheckForNull") 这种方法表明,对于"边界条件"进行记录是额外的奖励,而不是强制性的做法。 但是,这并不覆盖函数的返回对象的特殊值。为此,仍然需要完整的文档。 我认为它们确实如此,并且始终将注释放在标头文件(c ++)中。 除了有效的输入/输出/返回注释之外,我还注意到该函数很可能引发哪些异常(由于我经常想将返回值用于...很好地返回一个值,所以我更喜欢异常而不是错误代码)
|
最新内容
相关内容
linux汇编语言命令?
linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇编语言指令的基本格式是什么1、有以下几种基本格式:标号,又称为指令linux汇编语言命令?
linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇编语言指令的基本格式是什么1、有以下几种基本格式:标号,又称为指令linux查看函数命令?
linux查看函数命令?,系统,信息,名称,命令,位置,情况,公用,名字,标准,资料,linux下有没有像查看函数那样直接使用man命令来查看结构体的命令?这linux脚本注释命令?
linux脚本注释命令?,代码,系统,工作,名称,地方,脚本,命令,信息,状态,简介,linux脚本里的#! 是什么意思1、方法一:切换到shell脚本所在的目录(此linux常用命令文档?
linux常用命令文档?,工作,系统,地址,管理,网络,命令,信息,目录,操作,文件,linux基本操作命令linux常用命令有pwd命令、cd命令、ls命令、cat命linux命令标记注释?
linux命令标记注释?,地址,基础,系统,底部,命令,文件,参数,注释,程序,控制台,30个必知的Linux命令技巧,你都掌握了吗1、su:切换用户身份。sudo:以linux命令是什么语言?
linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,部分,dos和linux的命令行里面用的是什么语言?1、DOS/Windows/Linuxlinux打开文档命令?
linux打开文档命令?,密码,图片,系统,标准,命令,文件,终端,发行,信息,情况,Linux系统终端打开文件用什么命令1、linux下打开图片文件的命令:eoglinux命令格式描述?
linux命令格式描述?,地址,图片,系统,工作,命令,信息,设备,百分比,名字,首次,linux命令的格式化命令是什么?1、Linux的磁盘格式化命令是“mkfs调用函数命令linux?
调用函数命令linux?,系统,管理,网络,通用,统一,观察,地址,代码,设备,地方,怎么调用system函数,使用Android的linux命令1、int system(const chlinux改语言命令行?
linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,linux命令行下怎样改变语言将内容改为:LANG=zh_CN.UTF-8LANGUAGE=zh_linux命令行c语言?
linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linux终端下如何进行C语言编译1、在Linux下面,如果要编译一个C语言源