2009-09-07 3 views
10

У меня есть проект под названием Data, который является слоем данных. В этом проекте все файлы просто лежат в верхней папке. У меня есть перечисления, POCOs, репозитории, частичные классы и так далее.Соглашения об именах для папки C# проекта

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

Папка «Хранилища» довольно очевидна, но где я должен хранить POCOs и перечисления?

Благодаря

+2

Не имея прямого отношения к вашему вопросу, вам, вероятно, следует подумать о переименовании вашего проекта в нечто более значимое и в соответствии с Руководством по разработке рамок. Теперь на ваш вопрос: FDG также дает советы о том, когда и как структурировать подпространства имен. http://stackoverflow.com/questions/1389458/c-project-folder-naming-conventions/1389507#1389507 –

ответ

5

Я предпочитаю использовать папки проекта как способ выделения вспомогательных пространств имен. Так что в вашем случае, возможно, папка Repositories, которая имеет класс в пространстве имен Data.Repositories. Обратите внимание, что для частичных классов каждый файл должен находиться в одном и том же пространстве имен.

2

Лучшая прецизия состоит в том, чтобы делить объекты в папках по объектной модели, а не по типу.

1

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

Разделение папок по типу, например. перечисления, POCOs, репозитории, частичные классы и т. д., вряд ли будут полезны.

Возможно, вы захотите использовать подпапку для сгенерированного кода, который нельзя редактировать.

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

Там нет необходимости ставить каждое перечисление в своем собственном файле, если перечисление только используется одним классом, действительно положить его в том же файл класса. Например, перечисление PersonSex можно поместить в файл person.cs. Точно так же, если у вас есть много небольшие и тесно связанные классы, рассмотрите возможность их размещения в том же файле.

10

I (в настоящее время - изменения, основанные на проекте), как правило, использовать этот подход при именовании сборок/проектов/пространств имен в проекте стиля/Web SAAS)

  • CompanyName.
    • ProductName.
      • Данные.
      • Бизнес. (справочные данные)
      • Модель. (POCO и интерфейсы - все ссылки)
      • Услуги. (Уровень обслуживания WCF)
      • ServiceClient. (на которые ссылаются веб-клиенты)
      • Веб. (бизнес-уровень веб-клиента)
        • ViewModel. (Вид конкретной модели)
        • {клиент сталкивается с продуктовым сегментом} [Торговля, CMS, CRM, отчетность и т.д.]

Объяснить Услуги/Сервис клиента .. . Я использую IoC (в настоящее время StructureMap), который позволяет моему WebClient либо говорить непосредственно на уровне Business, либо перенаправляться, чтобы говорить через ServiceClient через Services to Business. Это дает мне гибкость при развертывании моего уровня приложения в моих веб-приложениях или распределении частей моего уровня бизнеса (уровня приложения) на разные серверы с помощью принципов WCF/SOA.

Смежные вопросы