我被告知永远不要假设有关传入数据的有效性(参考用户输入 - 我总是验证),但是,有没有理由采用相同的方法传递参数对象方法之间?
当对方法参数执行操作时,即使我99.9%确定传入参数将具有有效数据,我是否总是验证它们?
答案 0 :(得分:2)
它取决于。
您应该只在输入可能无效时进行验证,例如库中的公共方法,处理用户输入的方法等。
不验证的方法应通过外观设计模式或附加层屏蔽用户。
一遍又一遍地验证相同的内容会增加维护代码时出错的风险,不会提供额外的安全性并增加代码库的大小。
答案 1 :(得分:1)
通常情况下,我会使用
assert
声明,如果选择的语言提供。优点是你表达了参数的前/后,它们作为未来开发人员的注释,通常可以通过标志切换到编译器/解释器,不会因为断言错误而导致代码爆炸。 / p>
在计算机编程中,断言是放置在程序中的谓词(真假语句),表示开发人员认为谓词在该位置始终为真。 - Wiki about assertions
答案 2 :(得分:0)
至少你应该验证边界层中公共方法的参数(例如Facades)。在其他情况下,您应该考虑是否需要验证您的参数。另一个热点是持久性,我建议你在持久化方法中验证参数。