我有一个方法'ABC'做一些事情。从另一种方法XYZ调用ABC方法。输入值的数据验证应该在哪里发生?
我是否应该在调用ABC之前在XYZ中验证?如果它是坏数据方法ABC甚至不会被调用。
或者,我应该在ABC中验证吗?
或者,在两个位置进行验证?
答案 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方法没有意义。