zoukankan      html  css  js  c++  java
  • 第三十八条:检查参数的有效性

    绝大多数方法和构造器对于传递给他们的参数值都会有某些限制。例如索引值必须是非负数,对象引用不能为null,等等。

    应该在文档中清楚地指明所有这些限制,并且在方法体的开头出检查参数,以强制施加这些限制。这是“应该在发生错误之后尽快检测出错误”

    这一普遍原则的一个具体情形。

    如果传递无效的参数值给方法,这个方法在执行之前先对参数进行了检查,那么它很快就会失败,并且清楚的抛出适当的异常。如果没有检查它

    的参数就有可能发生几种情况。该方法可能在处理过程中失败,并且产生令人费解的异常。更糟糕的是,该方法可以正常返回,但是返回的结果

    可能是一个错误的结果。最糟糕的情况是,该方法可以正常返回,但是却使得某个对象处于被破坏的状态,将来在某个不确定的时候,在某个不

    相关的点上会引发错误。

    对于公有的方法,要用Javadoc的@throws标签 在文档中说明违反参数值限制时会抛出的异常。通常这样的异常为IllegalArgumentException,

    IndexOutOfBoundsException。

    对于未被导出的方法,也就是该方法不会被客户端代码调用的方法,作为包的创建者,你可以控制这个方法将在哪些情况下被调用,因此你可以确保

    只将有效的参数值传递进来。因此非公有的方法应该使用断言(Assertion)来检查参数。

    断言假设 assert关键词后面的 表达式为真,如果传进来的实际参数值跟我们的假设不一样,就会自动抛出AssertionError,而不需要显示手动抛出。

    但是并不是每个方法我们都需要去检查参数的有效性,例如在有些情况下,有效性的检查工作非常昂贵,或者根本是不切实际的,而且有效性的检查

    已隐含在计算过程中完成。

    简而言之,每当编写方法或者构造器的时候,应该考虑它的参数有哪些限制。应该把这些限制写在方法上面的注释文档中,并且考虑实施这些有效性

    检查的开销,权衡利弊,最后进行显示的来实施这些有效性的检查。养成这样的习惯非常重要。

  • 相关阅读:
    局部变量的认识
    179一个错误的认识
    (jmeter笔记) websocket接口测试
    (jmeter笔记)聚合报告分析
    (jmeter笔记)模拟用户各种场景压测
    (linux笔记)开放防火墙端口
    (jmeter笔记)导出响应内容的网络文件
    (jmeter笔记)jmeter导出excel,中文显示乱码
    (jmeter笔记)jmeter监控服务器资源
    (Jmeter笔记)jmeter连接数据库(mysql)
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4482288.html
Copyright © 2011-2022 走看看