0

如果您有一个对某些数据进行操作的函数链,最好让每个函数在使用之前验证数据是否有效,或者在链的开头进行验证并让链中的每个函数都“信任”它是有效的吗?

4

2 回答 2

1

应用防御性编程始终是一个好习惯。您应该考虑所有可能的情况。

如果输入来自用户,则验证变得非常重要,在这种情况下,您必须确保您的代码知道在每个无效数据场景中要做什么。尝试断言你可以预测的情况和不可预测的例外情况,细节取决于你使用的语言。这是防弹程序的基础。

于 2010-06-24T06:43:17.730 回答
0

取决于链上较低的函数是否被自己调用将在很大程度上影响您的决定。如果您有一个严格分层的系统,其中某些类仅由程序的其他类调用,那么这些内部类可以进行更轻松的数据检查并“信任”数据。

摘自 Steve McConnell 的“代码完成 2”:

“为防御性编程目的设置路障的一种方法是将某些接口指定为‘安全’区域的边界。检查跨越安全区域边界的数据的有效性,并在数据无效时做出明智的响应。

相同的方法可以在类级别上使用。类的公共方法假定数据不安全……一旦数据被类的公共方法接受,类的私有方法就可以假定数据是安全的。”

于 2010-06-24T06:18:29.223 回答