数据验证应该在哪里进行?

时间:2010-11-27 19:26:30

标签: validation design-patterns

我有一个方法'ABC'做一些事情。从另一种方法XYZ调用ABC方法。输入值的数据验证应该在哪里发生?

我是否应该在调用ABC之前在XYZ中验证?如果它是坏数据方法ABC甚至不会被调用。

或者,我应该在ABC中验证吗?

或者,在两个位置进行验证?

4 个答案:

答案 0 :(得分:3)

取决于。

如果只有XYZ调用ABC,那么您可以通过XYZ进行验证。

如果ABC在XYZ之外具有可见性(例如,它是公共方法或内部方法),那么您应该在ABC中进行验证。

如果它是一个关键功能(ABC = AtomicBombControl),那么随处可以验证。

答案 1 :(得分:0)

If it's bad data method ABC won't even be called.

我想你的问题已回答:)

答案 2 :(得分:0)

我看了很多考虑因素:

数据的正确程度有多重要。

哪里可能出错。

检查它的最有效和最有效的地方在哪里。

最好修复它。

很可能你的不良数据来自用户界面,而且这也是你可以提示修复它的地方。

在数据库中最有效地处理参照和唯一约束。更改数据库的代码应捕获这些代码并将有用的异常传递回用户界面。

如果正确性非常重要,那么多次检查是值得的开销,代码中的错误可能会向后端生成错误的数据。我会对财务数据或可能导致整个系统出现故障的事情进行多项检查。

答案 3 :(得分:0)

快速失败是好的。 您应该尽早报告有关错误数据的信息。因此,如果您知道XYZ中的数据不好,则在XYZ中抛出异常。如果数据已经很糟糕,ABC方法没有意义。