Когда вы решите разделить крупные проекты на более мелкие?
Когда и где вы решите разделить большой проект Visual Studio на несколько небольших проектов? Может ли он быть многоразовым? когда проект слишком велик? (но насколько большой-это слишком большой?)
и когда вы разделите проект, не так ли,
-
Группировка по таблицам базы данных
-
Группа по схожей функциональности
-
Другое..
5 ответов:
Плюсы многих проектов:
- проще изолировать код для модульного тестирования. Мне нравится изолировать код, который зависит от большого внешнего сервера, например, код, который разговаривает с SMTP-сервером, получает свою собственную сборку, код, который разговаривает с базой данных, получает свою собственную сборку, код, который разговаривает с веб-сервером, код, который является чистой бизнес-логикой, такой как проверки.
Плюсы нескольких проектов:
- Visual studio работает быстрее
- Некоторые разработчики просто не понимают вашего видения о разделении обязанностей и начнут ставить классы везде, так что вы в конечном итоге с боль от дополнительных проектов и преимущества помещения всего в один проект.
- каждый проект имеет конфигурацию, и когда вы принимаете решение о конфигурации проекта, часто вам приходится делать один и тот же шаг везде, например, устанавливать или изменять ключ строгого имени
Плюсы многих решений
- вы попали в максимальный уровень проекта позже.
- только материал в вашем текущем решении компилируется каждый раз, когда вы нажимаете f5
- Если ожидается, что проект не изменится в жизни вашего приложения, зачем повторно компилировать его снова и снова? Назовите это сделанным и переместите его к своему собственному решению.
Минусы многих решений
- вам предстоит сначала разработать зависимости между решениями и вручную скомпилировать зависимости. Это приводит к усложнению сборки файлы сценариев.
Проекты должны бытьсплоченными . Логика должна быть взаимосвязана, и достижение подобной цели
Этот ответ будет зависеть от размера продукта, который вы поддерживаете. В целом мы организуем наши проекты по предметной области и логике. И мы разделим их еще больше, чем больше вы разделяете, тем более организованным вы должны быть, или вы столкнетесь с ужасной проблемой рекурсивной зависимости.
Когда я решаю разбить проект, это когда он становится слишком большим или двумя области становятся слишком похожими.
Когда сложность растет, я не разделяю таблицы, я обычно разделяю функциональность.
Повторное использование-еще одно прекрасное время для сокращения строк кода, а также для внедрения нового проекта. Однако будьте осторожны, сколько" полезных " библиотек вы вводите, потому что они действительно влияют на читаемость/понятность.
Я не думаю, что есть линия в песке, которая говорит: Если вы нажмете 3K SLOC, у вас будет слишком много. Все это контекстуально.
Когда общая цель проекта остается прежней, но число классов становится большим, я склонен создавать папки и пространства имен, чтобы улучшить функциональность групп внутри проекта. Классы, связанные друг с другом, как правило, находятся в одной папке/пространстве имен, так что если мне нужно понять данный класс, связанные классы находятся рядом в обозревателе решений. Обычно я создаю новые проекты только в том случае, если понимаю, что определенный функционал сильно отличается от других. цель или если существует общая зависимость между существующими проектами.
Обычно я заканчиваю с несколькими относительно небольшими рамочными проектами, которые определяют интерфейсы для свободной связи между другими проектами, с более крупными проектами для различных типов конкретной функциональности. Это всегда по крайней мере один проект для пользовательского интерфейса и один проект для логики и данных (часто разделяется на два проекта, если уровень данных становится очень большим сам по себе.)
Я перемещаю код в новый проект, если он имеет общую функциональность (теоретически), пригодную и для других проектов. Если проект большой, поскольку он представляет собой сложную проблему, то пространства имен предоставляют отличный способ навести порядок в коде. Здесь можно, например, ввести (под)пространства имен для каждой таблицы SQL и т. д. и т.д.
У меня всегда есть несколько проектов (и , следовательно, решение), а не один проект со всем моим источником в нем.
В некоторых случаях это неизбежно, поскольку вы используете библиотеку с открытым исходным кодом и хотите иметь возможность отлаживать ее. Но более прагматично, как правило, Мои приложения обеспечивают функциональность через плагины. Это позволяет мне изменять поведение или предлагать поведение, выбираемое пользователем во время выполнения. В случае без плагина, это позволяет обновить одну часть вашей программы без обновления всего. Есть также случаи, когда вы можете предоставить основную версию и загружать модули / сборки только тогда, когда они вам нужны.
Еще одна причина заключается в том, что вы можете создавать небольшие тестовые приложения для выполнения сборки, а не создавать очень большое решение и потенциально требовать от пользователя выполнения нескольких (и не относящихся к делу) операций GUI, прежде чем даже достичь части, которую вы хотите протестировать. И это не просто забота о тестировании - может быть, у вас меньше смекалки пользователи в вашей организации, которые хотят, чтобы им были представлены только те биты, которые их касаются.