В контексте установщиков DDD в модели предметной области это запах кода. Их следует избегать по той простой причине, что они на самом деле не являются частью домена. В нем нет существительных, которые мог бы понять эксперт по предметной области, и вместо этого изменения в данных должны осуществляться с помощью определенных методов.
Пример:
customer.StreetName = ...
customer.City = ...
Хотя правильным способом сделать это было бы иметь метод customer.ChangeAddress
, который затем мог бы публиковать событие и т. Д., По крайней мере, с моего понимания, это все здравая теория, и я могу полностью понять, почему сеттеры в модели предметной области на самом деле нежелательны.
НО: Без сеттеров в вашей модели предметной области эти методы довольно сложно протестировать.
Как мне заставить экземпляр клиента запускать мои тесты, если я не могу создать его, не имея либо громоздкого конструктора, который принимает ВСЕ аргументы, либо не выполняет магию отражения? Я использую NHibernate в бэкэнде, поэтому NHibernate уже выполняет некоторую магию отражения, чтобы заполнить эти поля в первую очередь.
Но очень плохо иметь ctor с 10 аргументами .. (То же самое можно сказать и о фабричном методе).
Есть какие-нибудь советы по этому поводу?
привет даниил