Соглашения об именах в папке проекта С#

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

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

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

Спасибо

Ответ 1

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

Ответ 2

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

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

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

Ответ 4

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

Ответ 5

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

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

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

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

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