业务验证逻辑代码气味

jas*_*son 10 .net c# entity-framework business-logic

请考虑以下代码:

partial class OurBusinessObject {
    partial void OnOurPropertyChanged() {
        if(ValidateOurProperty(this.OurProperty) == false) {
            this.OurProperty = OurBusinessObject.Default.OurProperty;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也就是说,当OurPropertyin 的值OurBusinessObject改变时,如果该值无效,则将其设置为默认值.这种模式让我感觉像代码味道,但其他人(在我的雇主)不同意.你的想法是什么?

编辑补充:我被要求添加一个解释为什么这被认为是好的.我们的想法是,业务对象可以验证自己的属性,并在验证失败的情况下设置干净的默认值,而不是让业务对象的生产者验证数据.此外,有人认为,如果验证规则发生变化,业务对象生产者将不必更改其逻辑,因为业务对象将负责验证和清理数据.

Grz*_*nio 17

这绝对是可怕的.祝你好好调试生产中的问题.它唯一可以导致的是覆盖错误,这些错误只会突然出现在其他地方,而它们来自哪里并不明显.