2

我被告知永远不要假设传入数据的有效性(参考用户输入 - 我总是验证),但是,是否有任何理由采用相同的方法在对象方法之间传递参数?

在对方法参数执行操作时,即使我 99.9% 确定传入参数将具有有效数据,我是否应该始终验证它们?

4

3 回答 3

2

这取决于。

您应该仅在输入可能无效时进行验证,例如库中的公共方法、适用于用户输入的方法等。

不验证的方法应该通过外观设计模式或附加层对用户屏蔽。

一遍又一遍地验证相同的事情会增加维护代码时出错的风险,不会提供太多额外的安全性并增加代码库的大小。

于 2013-07-23T14:43:36.197 回答
1

通常,这就是我会使用

assert

声明,如果选择的语言提供。优点是您可以表达参数的前置/后置条件,它们用作未来开发人员的注释,并且通常可以通过编译器/解释器的标志来切换,以免代码因断言错误而崩溃。

在计算机编程中,断言是放置在程序中的谓词(真假语句),以表明开发人员认为该谓词在该位置始终为真。-关于断言的维基

于 2013-07-23T14:40:42.247 回答
0

至少您应该验证边界层(例如 Facades)中公共方法的参数。在其他情况下,您应该考虑是否需要验证您的参数。另一个热点是持久化,我建议你在持久化方法中验证参数。

于 2013-07-23T14:50:32.770 回答