Ada*_*arr 8 oop validation standards
在开发我的接口(契约)及其具体实现时,无论是数据模型还是存储库,我发现自己都在质疑验证逻辑应该去哪里.我的一部分(往往会胜出)说类本身应该负责它自己的验证(字符串最大长度,日期缓冲区等),但我的另一部分说这应该移到存储库,因为依赖在持久性存储库中,这些值可能会根据您的存储库实现而更改.
我认为有一些验证必须在类级别完成,并认为它应该保持在一起,即使存储库没有改变也不会改变,这就是为什么我倾向于将它保留在类中.
我只是在进行UI验证,但这绝不够,因为可以绕过大部分UI验证.
好奇人们的想法和背后的推理.
验证逻辑应该在哪里实施?
到处.
这可能看起来像很多工作或额外的开销,但实际情况是有充分的理由重新验证链中的所有内容,其中最少的是在它们成为问题之前捕获错误.
-亚当
验证规则应以抽象方式在类级别定义,这些规则可以 1) 在类的本机环境中运行 2) 根据需要呈现为其他依赖环境(例如 UI 脚本或存储库过程)的规则。
这使您可以将逻辑集中在类中应有的位置,并在 UI 和其他任何地方进行辅助验证——易于维护,因为它是从类派生的,而不是位于断开连接的位置的独立逻辑。全面获胜。