C# единая проектная организация
Я реорганизую свои исходные файлы в одно решение с одним проектом по разным причинам:
- настроенное на параноике антивирусное программное обеспечение;
- Советы по разбиению кода через сборки.NET
- Управляйте зависимостями компонентов, чтобы получить чистую архитектуру
- Воспользуйтесь преимуществами компиляторов C# и VB.NET
Это оставляет мне много пространств имен, которые разбиты на несколько файлов. До сих пор я использую это соглашение: учитывая пространство имен Company.Project.A
файлы называются A.f1.cs
, A.f2.cs
и так далее, и Company.Project.B
пространство имен разбито по B.f1.cs
, B.f2.cs
, так далее.
Учитывая одно ограничение проекта, есть ли лучшие способы организовать несколько файлов в нескольких пространствах имен?
3 ответа
Да, используйте папки.
Если вы создаете папку в проекте, новые классы в этой папке будут автоматически использовать имя папки в качестве основы для пространства имен.
Например, если у вас есть проект с пространством имен по умолчанию "Company.Project" и папкой "Foo", содержащей "Bar.cs", вы получите:
using System; // Etc
namespace Company.Project.Foo
{
class Bar
{
}
}
Таким образом, решение прямо здесь. Это папки. Но иногда это сложно. Во-первых, неплохо иметь один файл на класс. Если вы соберете несколько классов в один файл - со временем у вас возникнут проблемы с их поиском.
Вторая вещь о папках - если вы нажмете на папку и выберите, например, "Добавить -> Новый элемент", этот элемент будет помещен в выбранную папку. Но будь осторожен! Если вы будете перемещать файлы между папками, пространства имен не будут обновлены.
Это общий источник беспорядочного проекта. Через некоторое время вы можете получить проект, в котором у вас есть аккуратно организованные папки и файлы, но не отражающие пространства имен. Так, например, если у вас есть класс MyClass в папке MyFolder, убедитесь, что ваше пространство имен для этого класса напоминает MyApp.MyFolder, а не какой-то старый мусор.
Так что, если вы не будете упаковывать классы в один файл и посмотрите, отражают ли пространства имен классов иерархию папок - вы на правильном пути, чтобы сделать ваш проект очень удобным для чтения и навигации.
100% согласны с Джоном Скитом.
Чтобы получить больше обзора на уровне папок, мы создаем папки, нарушающие структуру пространства имен, добавляя к ним подчеркивание.