Организация / организация моих классов / интерфейсов в папки? Не изменяется пространство имен с папкой (Resharper: поставщик пространства имен = false) - PullRequest
4 голосов
/ 28 марта 2011

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

В настоящее время у меня в корне все мои классы и все интерфейсы.

Я разделил свои Enums, Contants и т. Д. На их собственные папки, но я не наследую папку как часть пространства имен, они просто контейнеры, чтобы держать их в порядке.

Мне было интересноесли у кого-нибудь есть опыт здесь?

Должен ли я разделить свои интерфейсы в свою собственную папку (не наследуя папку как часть пространства имен)

Должен ли я также разделить свои классы?

У меня также есть классы, которые являются потомками других классов .. т.е. класс реализует его как свойство.Следовательно, он никогда не будет создан снаружи.Поэтому я должен разделить их еще дальше и поместить (например) папку с именем «Продукты», и внутри этой папки у меня будет класс Product, а затем класс элементов и другие классы, специфичные для Product?

СноваИспользование папки в качестве средства разделения, а не наследования имени папки как части пространства имен.

Я хотел бы услышать некоторые отзывы.

Спасибо

1 Ответ

2 голосов
/ 28 марта 2011

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

Тем не менее, если вы действительно хотите сохранить все в одном проекте, вот мое мнение:

  • Если что-то общее для всех элементов проекта (например, полезные методы расширения), я создаю папку с именем Infrastructure, проверяю, что это не провайдер пространства имен, и помещаю туда все общие элементы.
  • Остальную часть проекта я пытаюсь разделить на основе поведения, а не типа. Например, вы предлагаете разделить перечисления и классы, но мне это просто кажется неправильным - если у меня есть объекты базы данных, которые являются либо классами, либо перечислениями, я бы предпочел иметь папку с именем Entities (и, следовательно, пространство имен MyProject.Entities ), который содержит как перечисления, так и классы в одном месте. (Обратите также внимание, что если бы вы внезапно перенесли это в проект с именем MyProject.Entities, вам не пришлось бы менять свои пространства имен.)

Подводя итог - попробуйте сгруппировать файлы по функциональности, а не по типу.

...