Re[15]: DDD протаскивание других слоев через параметры методов Domain
От: samius Япония http://sams-tricks.blogspot.com
Дата: 28.11.20 13:45
Оценка:
Здравствуйте, #John, Вы писали:

J>Здравствуйте, samius, Вы писали:



S>>метод UpdateInformation вероятно будет и в анемике тоже. Ключевой поинт анемика лишь в том, нахрена этот метод нужен User-у? Не отменяя того, что User- агрегат для изменения его информации, можно записать

S>>UpdateInformation(User user, string info, string email),

J>Это процедурный стиль программирования, типы данных отдельно, логика отдельно.

Единственное, что я изменил в этой записи — передал неявный параметр явно и в коде метода придется к полям user-а обращаться с явным указанием, а не с неявным (this.)

J>Объектно ориентированный подход — это когда данные и логика в одном объекте и мы работаем с объекатами.

J>В ОО объекты представляют сущности из реального мира(ограниченные условиями проекта).
J>Напр. хамелеон умеет менять цвет кожи. В коде мы и должны описывать хамелеона:
J>
J>class Chameleon
J>{
J>    public Color skinColor { get; private set; };

J>    public void ChangeSkin(Color color) => skinColor = color; 
J>}
J>

и чем же следующий хамелеон хуже?
class Chameleon
{
    public Color skinColor { get; set; };
}


J>ObjectsAndDataStructures

Не, ну это детский сад какой-то. Я предпочитаю опираться на принципы, сформулированные Кэйем. У него ничего нет про "данные и логика в одном объекте".

S>>Объекты всегда в правильном состоянии для чего? Для какого процесса?

J>Что бы можно было создать/достать из бд агрегат рут, вызвать любой метод и объект был в валидном состоянии, и ни каких ошибок не выкинуло(напр. NRE),
J>что бы агрегат рут без дополнительных проверок, можно было просто взять и сохранить в бд целиком, одной транзакцией, и не получилось что мы потеряли часть данных.

Я о том, когда валидное состояние для одного процесса(активности) подразумевает потерю части данных, необходимых для другого процесса (активности). При большом и все время растущем наборе активностей все данные не могут быть валидными для любых активностей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.