Архитектура компании позволяет нам определять один и тот же Enum в трех местах? - PullRequest
0 голосов
/ 02 августа 2011

Архитектура нашей компании преподносится как слабо связанная и обеспечивающая большое разделение интересов.Но мне интересно, если мы «делаем все правильно».

Например, допустим, у нас есть объект Car на нашем уровне бизнес / клиент.Этот Автомобиль имеет "CarEnum" на нем.Когда мы будем готовы сохранить Car в нашей базе данных, мы сопоставим Car с CarDTO, у которого также есть CarEnum с точно такими же параметрами, что и на бизнес-уровне Enum.Когда наш DTO получает код сервера (в другом решении), DTO сопоставляется с еще одной моделью с еще одним CarEnum с точно таким же определением, что и у бизнеса, и Ento DTO.*

Я не ожидал, что "хорошая архитектура" будет включать определение одного и того же Enum в трех местах.Я думал, что код должен был быть DRY .Это хорошая архитектура или это просто навязывание странного программирования культового груза на всю компанию?Какова лучшая альтернативная архитектура?

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

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

Всякий раз, когда вы дублируете определения, подобные этим, они должны быть реорганизованы и извлечены в отдельный файл.Теперь все эти 3 места тесно связаны с новым файлом, но не друг с другом.

1 голос
/ 02 августа 2011

Определение одного и того же перечисления в трех местах - это определенно запах архитектуры \ дизайна.

Обычно есть сборка для «общих типов». Обычно это такие вещи, как: интерфейсы, DTO, исключения и перечисления, которые имеют смысл на разных уровнях. Это важно не содержит поведения \ логики как таковой. Эта сборка может быть разделена между вашими различными слоями, не опасаясь соединения.

1 голос
/ 02 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...