В DDD, почему они часто используют методы вместо свойств? - PullRequest
4 голосов
/ 08 января 2012

В примерах DDD я часто вижу использование методов, в которых я, вероятно, использовал бы свойство. Почему это?

Например (из Укрепление вашего домена: Совокупное строительство )

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

Ответы [ 2 ]

8 голосов
/ 08 января 2012

Один аргумент для выбора методов вместо свойств - это когда будет какой-либо код, который что-то делает. Если он просто возвращает какое-то значение внутреннего поля, тогда используйте свойство. Если у него есть какая-то логика внутри или какой-либо расчет использует метод. Это проясняет клиенту кода, что при вызове этого метода что-то происходит.

Я думаю, что я прочитал в CLR через CSharp , что Microsoft сожалеет о том, что DateTime.Now делает свойство вместо метода. Он возвращает новое значение каждый раз, когда вы вызываете его. Это должен быть метод, а не свойство.

2 голосов
/ 18 февраля 2015

Нет причин заменять геттеры методами, специфичными для DDD. Здесь применяются общие рекомендации (делайте это, когда выполняются тяжелые вычисления или изменяется состояние).

Сеттеры - это другой случай. Некоторые люди даже считают их запахом кода. Вы должны испытывать подозрения каждый раз, когда видите сеттера. В идеальном случае состояние объекта изменяется только в методах, имена которых совпадают с глаголами в домене.

...