Сведения о вопросе

Drake

16:03, 1st July, 2020

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

Просмотров: 565   Ответов: 7

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



  Сведения об ответе

PROGA

18:03, 1st July, 2020

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

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

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

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

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


  Сведения об ответе

PIRLO

18:03, 1st July, 2020

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

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


  Сведения об ответе

SEEYOU

18:03, 1st July, 2020

Дэнни написал::

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

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

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

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

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


  Сведения об ответе

P_S_S

18:03, 1st July, 2020

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

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

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

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


  Сведения об ответе

DINO

18:03, 1st July, 2020

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

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


  Сведения об ответе

PHPH

18:03, 1st July, 2020

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


  Сведения об ответе

lesha

18:03, 1st July, 2020

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

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

  • доступ к данным (модели)
  • сервисы
  • ПЕРЕДНИЙ КОНЕЦ
  • тесты

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

mvc-витрина магазина


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться