一、绝大多数方法和构造器对于传递给他们的参数都会有某种限制.net
- 请在文档开头处清楚指明这些限制,在方法体开头检查参数,强制施加这些限制
- 不然会出现各类异常
- 最可怕的是没出现异常,返回的是错误结果
二、对于公有方法blog

非公有方法:文档
- 使用断言 检查参数
- 这些断言是声称被断言条件将会为真,不管外围包客户端怎么使用它
- 断言失败会抛出AssertionError
- 正常发布的代码都是断言无效的,即正常发布的代码中断言语句都不执行的(或不起做用的)
- 当执行代码时,使用-ea选项使断言有效,也可使用-da选项使断言无效(默认为无效)

三、有些参数方法并没用到,保存起来供后续调用使用get
- 这种状况更加须要有效性检查,否则后面报错排查起来很费劲
- 构造器是将参数保存起来以备后续使用的表明情形
四、执行计算任务前,先检查参数这一规定也有例外io
- 有时有效性检查工做很是昂贵,或已经隐含着计算过程当中
- 好比:Collections.sort(List ) ,sort 会对每一个元素进行比较,提早检查没有意义
五、有些时候,某些计算会进行隐式的执行必要的有效性检查class
- 这种状况抛出的异常可能与文档中标明的异常不相符
- 使用61条的异常转译技术,转为对应的异常
六、不是对参数的任何限制都是件好事List
七、总结方法
- 编写方法和构造器时,应该考虑它的参数有哪些限制
- 应该把限制写到文档中
- 显式的检查来实施这些限制