“纵深防御”的原则指出,应该在多个地方强制执行约束,这样,如果一条数据绕过或滑过一层,就会被下一层捕获。一个很好的例子是在一个Web应用程序中-您将验证放在客户端javascript中,在服务器端代码中(PHP / Ruby / ASP / whatever),然后将这些规则放入数据库中(例如外键约束)。这样,任何经过Java验证的数据都将被服务器捕获。任何超过服务器验证的数据都会被数据库约束捕获。

但是,这似乎违反了DRY(请勿重复自己)原则。在这里,您有三个重复相同验证规则的地方。我了解可以通过多种方式生成客户端JavaScript,以强制执行服务器端验证。我的问题是,如何整合数据库约束和服务器端代码?有什么方法可以生成代码以使其自动实施数据库约束?

最佳答案

DRY(不要重复自己)是一种源代码,即最佳实践原则,其基本含义是:不要重复代码,因为如果这样做,则会降低可维护性并增加发生错误的机会。

在数据库中强制引用完整性并不是对DRY的真正侵犯,因为:


数据库不是源代码的一部分
独自站立
除了客户端视图之外,还可以通过许多其他方式来访问和修改。例如。查询和报告引擎

关于validation - 深度防御与干战,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5146990/

10-11 05:10