oop - 表单验证和业务验证太多了吗?

标签 oop frameworks domain-driven-design dry single-responsibility-principle

我有这个关于表单验证和业务验证的问题。
我看到很多框架使用某种形式的验证库。您提交一些值,库会验证表单中的值。如果不行,它会在你的屏幕上显示一些错误。如果一切按计划进行,这些值将被设置到域对象中。在这里,这些值将被验证,或者更准确地说,应该被验证(再次)。很可能验证库中的验证相同。我知道 2 个 PHP 框架具有这种结构 Zend/Kohana。

当我看编程和一些原则时,比如 Don't Repeat Yourself (干)和 single responsibility principle (建议零售价)
这不是一个好方法。如您所见,它验证了两次。
为什么不创建进行实际验证的域对象。

示例:包含用户名和电子邮件的表单
表单提交。用户名字段和电子邮件字段的值将填充在 2 个不同的域对象中:用户名和电子邮件

class Username {}
class Email {}

这些对象验证它们的数据,如果无效则抛出异常。
你同意?您如何看待这种方法?有没有更好的方法来实现验证?
我对处理这些东西的许多框架/开发人员感到困惑。他们都错了还是我错过了一点?

编辑:
我知道也应该有客户端验证。在我看来,这是一个不同的球赛。如果您对此有一些评论以及处理此类事情的方法,请提供。

最佳答案

  • 表单验证(客户端)实际上只是为了可用性
  • 业务验证才是真正的验证

  • 您的应用程序可能会在没有您所谓的表单验证的情况下工作,它只会对用户看起来不太好。然而,需要业务验证以防止损坏的数据。

    关于oop - 表单验证和业务验证太多了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1951974/

    相关文章:

    ios - 避免单例的最佳方法

    c# - WPF 应用程序框架 (WAF) 教程链接/快速入门视频链接

    repository - DDD 存储库可以了解用户上下文吗?

    c# - 如何按照 TDD 方法更新 EF Core 2.0 拥有的实体?

    java - 在 Java 中如何使用没有 'new' 的构造函数?

    java - 在哪里放置潜在可重用的辅助函数?

    c++ - 指向父对象的持久指针

    基于 Java Swing 的游戏框架。有什么建议吗?

    oop - 基本的 OCaml OOP 问题

    .net - 存储库基础或特定方法?