В DDD: нужно ли объединять похожие команды в одну команду? - PullRequest
1 голос
/ 16 июня 2019

В настоящее время я пытаюсь применить проект, управляемый доменом, к проекту, над которым я работаю, и заметил, что некоторые команды похожи, за исключением нескольких небольших различий в способах проверки бизнеса для каждой из них. Чтобы дать вам пример, скажем, у меня есть эти три команды:

ShipCar Command

ShipMotorcycle Command

ShipTruck Command

Считаете ли вы целесообразным объединить все вышеперечисленные команды в следующие и в качестве параметра указать тип транспортного средства?

ShipVehicle(VehicleType) command

Насколько явными мы должны быть в именовании команд? Я настраиваю себя на неудачу, объединяя похожие команды в одну?

1 Ответ

2 голосов
/ 16 июня 2019

Вы можете сделать это обоими способами.Вы также можете сделать это, имея обе концепции одновременно.Наличие конкретного ShiMotorcycleCommand, который происходит от класса или реализует интерфейс ShipVehicleCommand, может быть полезным.Это зависит от требований как к вашему домену , так и к вашей реализации.

Поскольку DDD рекомендует вам моделировать в домене вашей системы, вам следует использовать вездесущий язык , который вы и ваши эксперты по доменам используете для получения ваших концепций.

Если ваш домен обобщает эти концепции и использует концепцию Автомобиль больше, чем использует более конкретные, такие как Автомобиль , Грузовик и Мотоцикл , используйте ShipVehicle.Если это не так, используйте ShipCar, ShipTruck и ShipMotorcycle вместо.

Используйте ваш домен , чтобы направлять вас.

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

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

Когда я начал работать с DDD, одна из вещей, на которые я обратил внимание, это то, что как разработчик, обладающий знаниями в области шаблонов проектирования и архитектур,У меня была тенденция абстрагироваться много с самого начала.Когда я остановился и начал больше думать о конкретных концепциях своей области, моделирование стало намного проще.Теперь я обобщаю и обобщаю, когда узнаю больше о domain и system .

...