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

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

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

и Когда вы разделите проект, вы,

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

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

  • другой..

4b9b3361

Ответ 1

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

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

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

  • Visual studio идет быстрее
  • Некоторые разработчики просто не получают ваше видение о разделении обязанностей и начнет сдавать классы везде, так что вы в конечном итоге боль дополнительных проектов и выгоды от один проект.
  • Каждый проект имеет конфигурацию, и когда вы принимаете решение о конфигурации проекта, вам часто приходится делать один и тот же chagne повсюду, например, устанавливать или изменять сильный ключ

Преимущества многих решений

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

Недостатки многих решений

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

Ответ 2

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

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

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

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

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

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

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

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