Подтвердить что ты не робот

Папки или проекты в решении Visual Studio?

При разбиении решения на логические слои, когда лучше всего использовать отдельный проект только для группировки по папке?

4b9b3361

Ответ 1

По умолчанию всегда просто создает новую папку внутри одного и того же проекта

  • Вы получите единую сборку (без дополнительной гимнастики ILMerge).
  • Легче запутывать (потому что у вас будет меньше публичных типов и методов, в идеале нет вообще)

Разделение исходного кода на несколько проектов имеет смысл, если вы...

  • У некоторых частей исходного кода, которые являются частью проекта, но не развертываются по умолчанию или вообще (модульные тесты, дополнительные плагины и т.д.).
  • Больше вовлеченных разработчиков, и вы хотите рассматривать их работу как потребляемую черную коробку. (не рекомендуется)
  • Если вы можете четко разделить проект на отдельные слои/модули, и вы хотите убедиться, что они не могут перекрестно потреблять внутренних участников. (также не рекомендуется, потому что вам нужно будет решить, какой аспект является самым важным)

Если вы считаете, что некоторые части вашего исходного кода могут быть повторно использованы, все равно не создавайте его как новый проект. Подождите, пока вы действительно захотите повторно использовать его в другом решении и, если необходимо, изолировать его от оригинального проекта. Программирование не является лего, повторное использование обычно очень сложно и часто не произойдет, как планировалось.

Ответ 2

Разделение функций в проектах часто является оптимизацией архитектуры YAGNI. Как часто вы повторно использовали эти отдельные проекты? Если это не частое появление, вы затрудняете разработку, сборку, развертывание и обслуживание для теоретического повторного использования.

Я предпочитаю разделять на папки (используя соответствующие пространства имен) и рефакторинг для разделения проектов, когда у вас есть реальный случай использования повторного использования.

Ответ 3

denny писал (а):

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

Я действительно согласен с этим - если вы можете его повторно использовать, он должен быть в отдельном проекте. С учетом сказанного это также очень сложно эффективно использовать повторно:)

Здесь, в SO, мы старались быть очень простыми с тремя проектами:

  • Веб-проект MVC (который делает хорошую работу по разделению ваших слоев на папки по умолчанию)
  • Проект базы данных для управления исходным кодом нашей БД
  • Модульные тесты против моделей/контроллеров MVC

Я не могу говорить для всех, но я доволен тем, насколько просто мы его сохранили - действительно ускоряет сборку!

Ответ 4

Я обычно делаю проект для GUI - проект для бизнес-логики - проект для доступа к данным и проект для модульных тестов.

Но иногда разумно иметь разделение на основе сервисов (если вы используете сервис-ориентированную архитектуру), таких как аутентификация, продажа и т.д.

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

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

Ответ 5

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

Почему это не рекомендуется? Я нашел это очень полезным способом управления приложением с несколькими разработчиками, работающими на разных участках. Делает проверки намного проще, главным образом, фактически устраняя слияния. Очень редко двум разработчикам приходится работать над одним и тем же проектом одновременно.

Ответ 6

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

Ответ 7

Я действительно считаю, что лучше разделить проект, но все зависит от размера проекта и количества людей, работающих на нем.

Для больших проектов у меня есть проекты для

  • доступ к данным (модели)
  • услуги
  • front end
  • тесты

Я получил модель от Роба Коннери и его приложение для магазина... кажется, работает очень хорошо.

mvc-storefront