检查参数的有效性实际上是满足了这一条普遍原则:

应该在发生错误之后尽快检测出错误。

例子:
有个数据库查询的例子,传入一个id,查出一个Student对象,然而返回null,如果没有及时检查这个实例是否为空, 那么在后面使用这个实例时会报错 空指针异常,这时要想找到这个实例究竟在什么时候,什么地方变成空的就会难度加大,因为从赋值到使用这段时间,这个实例可能会发生变化。

需要注意的地方:
1.在构造器中检查参数是十分必要的,可以避免创建出一个违反规则的类。

2.如果检查的代价非常大,那么可以延迟检查或不检查。

总结:
每当编写方法或者构造器时,应该先考虑它的参数有没有什么限制,并把这些限制写到文档中,并且在方法或者构造器的开头处,通过显示检查来实施限制。养成这样的习惯是很重要的。

Effective Java之检查参数的有效性(三十八)相关推荐

  1. Effective Java之必要时进行保护性拷贝(三十九)

    我们来看一个不可变对象的攻守问题: public class Period{private final Date startTime;private finale Date endTime;publi ...

  2. Effective Java之注解优于命名模式(三十五)

    Java 1.5之前,一般使用命名模式表明有些程序元素需要通过某种工具或者框架进行特殊处理.例如,JUnit测试框架原本要求用户一定要用test作为测试方法名称的开头. 命名模式的缺点: 文字拼写错误 ...

  3. Effective Java之坚持使用Overide注解(三十六)

    @Override 注解: 表示被注解的方法声明覆盖了超类型中的一个声明 1.我们应该在想要覆盖超类声明的每个方法声明中使用 Override 注解 ; 如果使用了Override注解的方法是重载而不 ...

  4. Effective Java之用EnumSet代替位域(三十二)

    什么是位域?为什么用到它? 先来看一个例子: public class Test {public static final byte STYLE_BOLD = 1<<0; // 1publ ...

  5. Effective Java之保护性编写readObject方法(七十六)

    readObject方法实际上相当于另一个公有的构造器,与其他构造器一样,它也需要进行参数的有效性检查与保护性拷贝.参考:Effective Java之必要时进行保护性拷贝(三十九) 原因很简单,为了 ...

  6. 方法——检查参数的有效性

    检查参数的有效性 绝大多数方法和构造方法对于传递给它们的参数都会有某些限制,比如对象引用不能为null,比如必须是正数等.你应该在文档中(或者注释中)清楚地指出所有这些限制,并且在方法体的开头检查参数 ...

  7. 三十八、Fluent融化凝固模型参数设置依据

    1. 融化凝固模型概述 1.1 模型原理 我们在Chapter37分享了Fluent融化凝固模型案例,前文只是介绍了Fluent中的操作过程. 不知道大家会不会觉得很奇怪,Fluent模拟融化和凝固, ...

  8. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  9. JavaScript学习(三十八)—面向过程与面向对象

    JavaScript学习(三十八)-面向过程与面向对象 一.程序设计语言中的两大编程思想:面向对象.面向过程 (一).面向过程 就是指完成某个需求的时候,先分析出完成该需求时所需要经历的步骤有哪些,然 ...

最新文章

  1. 9.5. SELINUX
  2. 驱动设计的思想:面向对象/分层/分离
  3. tomcat catalina localhost 没有项目_实用shell脚本--一键配置tomcat定期日志清理功能
  4. BZOJ2675 : Bomb
  5. MFC程序打开控制台
  6. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...
  7. 夫妻俩在互联网公司工作,年收入曝光,网友:这么高!
  8. ASP.NET中的事件处理
  9. 数字IC后端设计实现流程之floorplan及powerplan规划
  10. mysql 随机记录 newid()_sql随机查询数据语句(NewID(),Rnd,Rand(),random())
  11. 10+年程序员告诉你职场误区,如何快速提升自己?
  12. WPF DataGrid 导出Excel
  13. gradle下载地址
  14. 网站建设的一般原则及网站推广技巧
  15. 中科软java笔试题
  16. Android Studio 安装TinyPng插件
  17. Linux尖角号符号怎么打出来,六角星号怎么打出来
  18. 快速搭建java后台管理系统
  19. 基于西储大学的轴承故障诊断系统设计
  20. 学习Java,是看书好还是看视频?

热门文章

  1. cocos2d-x游戏开发(七)对象释放时机
  2. 第12讲:Ajax 的原理和解析
  3. 大规模混合部署项目在字节跳动的落地实践
  4. 裂墙推荐!IntelliJ IDEA 常用插件一览,让效率成为习惯
  5. RabbitMQ管理(1)——多租户与权限
  6. 设计模式:中介者模式(Mediator)
  7. 倒计时3天:3D音带你起飞
  8. 通过WebAssembly在移动端解码H.265
  9. VideoLAN,VLC和FFmpeg社区联合开发AV1解码器
  10. 动态规划——坐标型位操作型