Когда Вы решаете разделить крупные проекты на меньшие проекты?

Когда/где Вы решаете разделить большой проект Visual Studio на меньший несколько проектов? Если это может быть допускающим повторное использование? когда проект является слишком большим? (но как большой является слишком большим?)

и Когда Вы действительно разделяете проект, сделайте Вас,

  • группа таблицами базы данных

  • группа схожей функциональностью

  • другое..

22
задан kay.one 10 September 2014 в 06:20
поделиться

5 ответов

Плюсы многих проектов:

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

Плюсы нескольких проектов:

  • Visual Studio работает быстрее
  • Некоторые разработчики просто не понимают вашего видения разделения обязанностей и начнут добавлять классы {{1} } повсюду, поэтому вы получите боль от дополнительных проектов и преимущества объединения всего в одном проекте.
  • У каждого проекта есть конфигурация, и когда вы принимаете решение о конфигурации проекта, вам часто приходится делать одни и те же изменения везде, например, устанавливать или изменять ключ строгого имени.

Плюсы многих решений

  • Вы нажимаете максимальный уровень проекта позже.
  • Только то, что есть в вашем текущем решении, компилируется каждый раз, когда вы нажимаете f5
  • Если не ожидается, что проект изменится в жизни вашего приложения, зачем его перекомпилировать снова и снова? Назовите это готовым и переместите к собственному решению.

Минусы многих решений

  • Вы должны определить зависимости между решениями и сначала вручную скомпилировать зависимости. Это приводит к сложным сценариям сборки.
16
ответ дан 29 November 2019 в 05:26
поделиться

У меня всегда есть несколько проектов (и, следовательно, решение), а не один проект со всем моим исходным кодом.

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

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

1
ответ дан 29 November 2019 в 05:26
поделиться

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

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

1
ответ дан 29 November 2019 в 05:26
поделиться

Проекты должны быть связными . Логика должна быть взаимосвязанной и достигать аналогичной цели

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

Когда я решаю разделить проект, это происходит тогда, когда он становится слишком большим или две области становятся слишком похожими.

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

Возможность повторного использования - еще один отличный момент, чтобы сократить количество строк кода, а также представить новый проект. Однако будьте осторожны с тем, сколько «служебных» библиотек вы вводите, потому что они действительно влияют на удобочитаемость / понятность.

Я не думаю, что есть линия на песке, которая говорит, что если вы наберете 3k SLOC, у вас будет слишком много. Все контекстно.

9
ответ дан 29 November 2019 в 05:26
поделиться

Я перемещаю код в новый проект, если он имеет общие функции (теоретически), которые можно использовать и в других проектах. Если проект большой, потому что он представляет собой сложную проблему, то пространства имен предоставляют отличный способ навести порядок в коде. Здесь вы можете, например, ввести (под) пространства имен для каждой таблицы SQL и т. Д. И т. Д.

0
ответ дан 29 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: