首页 > 其他分享 >谁来检查方法参数合法性

谁来检查方法参数合法性

时间:2022-11-10 20:34:33浏览次数:29  
标签:合法性 检查 Book void book 参数 buy null public


我们在编程中的函数或者是方法,大多数都是有参数的。参数对于方法来说是很重要的输入数据,传入的参数值的合法性影响着方法的稳定性,严重时甚至可能导致崩溃问题的出现。

比如这段代码



public static void main(String[] args) {
Book book = null;
new Main().buy(book);
}


public void buy(Book book) {
System.out.println(book.getPrice());
}

上面的代码在执行起来会导致空指针异常,其实解决起来也挺简单,就是做一些非空的检查,比如这样,在调用处进行校验



public static void main(String[] args) {
Book book = null;
if (book != null) {
new Main().buy(book);
}
}

或者是这样在方法定义的时候处理



public void buy(Book book) {
if (book != null) {
System.out.println(book.getPrice());
}
}

就这个案例而言,两者都可以,但是有没有什么规范呢

其实还是有一些约定的 如果方法是public,protected等这样被外部可调用的时候,方法定义时需要进行值的合法性检验,因为无法确保外部始终传递合法的参数值。 对于内部的private等可见性等,则不是必需的,因为内部调用相对是可控更高的。

除此之外,我们在JavaDoc注释也需要同步跟进,比如



/**
* bub a book
* @param book could be null
*/

public void buy(Book book) {
if (book != null) {
System.out.println(book.getPrice());
}
}

我们通过增加​​@param book could be null​​就可以告诉调用者,不用做合法性检查,方法内部已经处理了。这种方式对开发者还是比较友善的。此外我们也可以使用@Nullable或者@NonNull来表明当前参数的检查职责归属。

至此我们也理清了检查方法参数合法性的责任归属,欢迎评论交流。

标签:合法性,检查,Book,void,book,参数,buy,null,public
From: https://blog.51cto.com/u_3987305/5842015

相关文章

  • C语言 函数02 自定义函数的参数
    实际参数(实参):真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。形......
  • ASEMI肖特基二极管SBT10100VCT参数,SBT10100VCT应用
    编辑-ZASEMI肖特基二极管SBT10100VCT参数:型号:SBT10100VCT最大重复峰值反向电压(VRRM):100V最大平均正向整流输出电流(IF):10A峰值正向浪涌电流(IFSM):150A每个元件的典型热阻(ReJA):2℃/......
  • ASEMI肖特基二极管SBT10100VCT参数,SBT10100VCT应用
    编辑-ZASEMI肖特基二极管SBT10100VCT参数:型号:SBT10100VCT最大重复峰值反向电压(VRRM):100V最大平均正向整流输出电流(IF):10A峰值正向浪涌电流(IFSM):150A每个元件的典型热阻(R......
  • 各种编译环境中如何为C++添加命令行参数(Command-line parameter)
    因恐其内容丢失所以重新编辑到本博文中在实际的编程中,我们经常使用命令行参数。命令行参数的英文是Command-lineparameter或者是argument,下面是wikipedia中关于​​Command......
  • 串口转网口的配置参数介绍
    1.串口转网口介绍串口转网口是一种协议转化器。包括两类产品:串口服务器和串口转网口模块。前者就是一个设备,而后者常常被作为一种电子元器件来使用,这种串口转网口模块不仅......
  • SQL数据分析,数据表检查
    拿到一张数据表时,通常要预览数据表的整体情况,不能盲目地做分析,首先查看数据表的数据量大小,包含行数、列数,空白数据有多少、异常数据有多少,查看某列数据的唯一值等,下面一起来......
  • Python下使用argparse模块的脚本参数配置
    python的一个用于命令行参数解析的模块,其专业解释已经有很多了,可以去详查,不做赘述,仅谈谈自己的一些理解。为什么要用argparse模块来为代码导入参数或者文件路径呢?如果是一......
  • PHP curl获取页面内容,不直接输出到页面,CURLOPT_RETURNTRANSFER参数设置
    使用PHPcurl获取页面内容或提交数据,有时候希望返回的内容作为变量储存,而不是直接输出。这个时候就必需设置curl的CURLOPT_RETURNTRANSFER选项为1或true。1、curl获取页面......
  • 请求与响应——日期类型参数传递
    1.  2.格式的转换都是靠下面这个类型转换器实现的 ......
  • json数据传递参数
    1.类型json数组json对象(POJO)json数组(POJO) 2.接收请求中的json数据的步骤:(1)添加json数据转换相关坐标  (2)  (3)  注意:@EnableWebMvc注解功能强大,该注解整合......