考虑以下代码:

partial class OurBusinessObject {
    partial void OnOurPropertyChanged() {
        if(ValidateOurProperty(this.OurProperty) == false) {
            this.OurProperty = OurBusinessObject.Default.OurProperty;
        }
    }
}

也就是说,当更改OurProperty中的OurBusinessObject的值时,如果该值无效,则将其设置为默认值。这种模式使我感到震惊,因为有代码气味,但是这里的其他人(在我的雇主处)不同意。你的想法是什么?

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

最佳答案

太可怕了。祝您调试生产中的问题时好运。唯一可以导致的错误是覆盖bug,这些bug只会在其他地方弹出,而这些错误根本就不会出现。

10-05 22:42