考虑以下两种数据验证场景:
到处检查一切
确保每个接受一个或多个参数的方法都实际检查它们以确保它们在语法上是有效的。
优点
- 非常精细的检查粒度。
- 如果正在编写的代码是针对某种库的,我们会确保限制在使用它的开发人员未能提供有效数据时可能造成的损害。
缺点
- 总是执行大多数时间不需要的检查是昂贵的。
- 仍然有可能不时忘记添加支票。
- 正在编写更多代码,因此需要维护。
利用 TDD 的优点
仅在数据从外部世界输入您的代码时验证数据。为了确保内部数据在语法上总是正确的,请创建测试来检查每个返回值的方法。确保如果输入有效数据,则退出有效数据。
利弊实际上与前一种方法的利弊互换了。
到目前为止,我正在使用第一种方法,但是由于我正在使用测试驱动开发,我想也许我可以使用第二种方法。
优点很明显,不过,我想知道它是否像第一种方法一样安全。