是';拥有';房地产良好实践
本文关键字:拥有 房地产 | 更新日期: 2023-09-27 18:01:16
有时在我的模型中,我只实现get‘Has’属性(例如HasDescription
(,这样我就可以使用if (model.HasDescription) { ... }
从模型外部轻松检查属性的有效性。
实现可能看起来像:
public bool HasDescription => Description != null && Description != string.Empty;
这种做法好吗?更具体地说,如果我采取这种方法,我应该把这种条件逻辑转移到其他地方吗?也许是扩展方法?
有时这是个人偏好的问题;拥有一堆HasX属性是可以的。我有时会出于验证的原因这样做(我发现在使用FoolProof时,在MVC应用程序中使用这样的属性效果很好(。不过,必须添加一堆HasX属性可能会很麻烦。。。所以,如果你在控制器中使用这些进行评估,这是个人偏好的问题。如果这是你想采取的方法,我不会担心。
如果您将其用于验证目的,有时当您需要基于模型的评估时,可以使用IsValid方法来确定验证状态。这将更像MVVM而不是MVC,但它是有效的。
Has
是完全合法的。然而,逻辑属于setter或constructor:决定表示缺失属性(null
或string.Empty
,最好是null
,但绝对不是两者都有(的方法。这使得Has
逻辑检查null
。
有利于完全放弃Has
的一个考虑因素是使用??
运算符的可能性。如果您的用例允许您更换
var xyz;
if (x.HasXyz) {
xyz = h.Xyz;
} else {
xyz = defaultValueOfXyz;
}
带有
var xyz = h.Xyz ?? defaultValueOfXyz;
那么您可以完全放弃CCD_ 11。