1

当我实例化一个新对象时,我应该如何处理在验证方面传入的参数?

我猜只是假设传入的参数很好是不安全的,但是我认为验证应该分成另一层?

例如,如果一个类需要一个开始时间和结束时间,那么该类应该需要的东西:

  • start_time并且end_time都是有效的日期时间对象
  • start_time应该是之前end_time

任何可以在类构造函数中验证的方向(如果有的话)以及关于应该在哪里进行验证的任何一般信息都会有所帮助。

值得注意的是,我正在尝试使用 MVC 结构。

4

2 回答 2

0

数据验证是域对象的责任,域对象是模型层的一部分。

不,您不应该在构造函数中进行任何计算。构造函数应该只为局部变量赋值。您应该验证setters中的信息,或者使用单独的公共方法。

此外,您不应将验证与数据完整性检查混淆(例如“用户必须拥有唯一的电子邮件”)。这些应该由存储抽象结构(如数据映射器)执行和/或由您的存储介质强制执行。当您从域对象中保存信息时,您的存储抽象结构可能会遇到错误。在这种情况下,他们将错误状态分配给域对象。

根据您的应用程序的结构,错误状态(由验证问题和数据完整性冲突引起的错误状态)可以不恰当地处理或临时存储在某个地方,例如:在会话中。

于 2012-08-30T11:18:40.510 回答
0

您将问题标记为。两者都是松散类型的语言,不会强制您的变量和 orguments 为特定类型。取决于您将如何处理这些值,这很好。有时,您必须检查,否则您的代码会产生错误。两种语言都提供了这样做的方法。

回答您的问题:是的,可以在构造函数上验证您的数据。但这也很无聊和凌乱,所以不要到处这样做。何时应该这样做取决于代码的结构,以及如何在更高级别上处理错误和异常。

于 2012-08-30T03:41:45.880 回答