在DDD中,为什么他们经常使用方法而不是属性

本文关键字:使用方法 属性 DDD 为什么 他们 | 更新日期: 2023-09-27 18:19:41

在DDD示例中,我经常看到使用可能使用属性的方法。为什么会这样?

例如(来自强化你的领域:聚合结构)

public class Order
{
    public bool IsLocal()
    {
       return Customer.Province == BillingProvince;
    }
}

在DDD中,为什么他们经常使用方法而不是属性

选择方法而不是属性的一个参数是,何时会有任何代码执行某些操作。若它只是返回一些内部字段值,那个么就使用property。如果它内部有任何逻辑或进行任何计算,请使用方法。这使代码的客户端更清楚地知道,当您调用此方法时会发生一些事情。

我想我已经通过CSharp在CLR中读到,Microsoft后悔将DateTime.Now作为属性而不是方法。每次调用它时,它都会返回新值。这应该是方法,而不是属性。

没有理由用DDD特定的方法替换getter。一般指南适用于此(当执行繁重的计算或状态发生变化时,请执行此操作)。

Setters则是另一种情况。有些人甚至认为它们是一种代码气味。每次看到二传手,你都应该怀疑。在理想情况下,对象的状态只在名称与域中的动词一致的方法中更改。