考虑以下代码:
partial class OurBusinessObject {
partial void OnOurPropertyChanged() {
if(ValidateOurProperty(this.OurProperty) == false) {
this.OurProperty = OurBusinessObject.Default.OurProperty;
}
}
}
也就是说,当更改
OurProperty
中的OurBusinessObject
的值时,如果该值无效,则将其设置为默认值。这种模式使我感到震惊,因为有代码气味,但是这里的其他人(在我的雇主处)不同意。你的想法是什么?编辑为添加:有人要求我添加一个解释,以解释为什么认为这样还可以。这个想法是,业务对象可以验证自己的属性,并在验证失败的情况下设置干净的默认值,而不是让业务对象的生产者验证数据。此外,还认为,如果更改验证规则,则业务对象生产者将不必更改其逻辑,因为业务对象将负责验证和清除数据。
最佳答案
太可怕了。祝您调试生产中的问题时好运。唯一可以导致的错误是覆盖bug,这些bug只会在其他地方弹出,而这些错误根本就不会出现。