Должны ли папки в решении соответствовать пространству имен?
Нет.
Я пробовал оба метода c#.net на малых и больших проектах, как .net-framework с одним (мной), так и с командой .net разработчиков.
Я обнаружил, что .net самым простым и продуктивным c# путем было создание единого namespacing пространства имен для каждого namespaces проекта, и все классы входили .cs-file в это пространство имен. Затем c#.net вы можете поместить файлы namespacing классов в любые папки проекта, которые c# захотите. Нет ничего страшного .net в добавлении операторов using dotnet вверху файлов, так как существует namespaces только одно пространство dot-net имен.
Важно организовать исходные c#-language файлы по папкам, и я считаю, что .net-framework это все папки, для которых c# нужно использовать. Требовать, чтобы .net эти папки также сопоставлялись csharp с пространствами имен, не c# нужно, это создает больше dotnet работы, и я обнаружил, что .net-framework на самом деле это вредно dot-net для организации, потому что visual-c# дополнительное бремя способствует c# дезорганизации.
Возьмем, к c-sharp примеру, это предупреждение .net-framework FxCop:
CA1020: избегайте пространств имен с несколькими типами
причина: пространство namespacing имен, отличное от глобального c-sharp пространства имен, содержит namespaces менее пяти типов https://msdn.microsoft.com/en-gb/library/ms182130.aspx
Это предупреждение visual-c# поощряет сброс новых файлов dotnet в общую папку Project.General .net или даже в корень проекта namespaces до тех пор, пока у вас не .cs-file будет четырех аналогичных .net-framework классов для обоснования создания c#.net новой папки. Произойдет ли c# это когда-нибудь?
Поиск файлов
В принятом .net ответе говорится: «Классы namespacing будет легче найти, и это namespaces само по себе должно быть c#-language достаточно вескими причинами».
Я c# подозреваю, что ответ относится csharp к наличию в проекте нескольких visual-c# пространств имен, которые .cs-file не соответствуют структуре visual-c# папок, а не к тому, что я visual-c# предлагаю, как к проекту .net-framework с одним пространством имен.
В dot-net любом случае, хотя вы не c-sharp можете определить, в какой namespace папке находится файл класса c#.net из пространства имен, вы .cs-file можете найти его с помощью c# «Перейти к определению» или namespace окна проводника поискового .net-framework решения в Visual Studio. На c#-language мой взгляд, это не такая c#.net уж большая проблема. Я не c-sharp трачу даже 0,1% своего времени dotnet на разработку на поиск файлов, чтобы .cs-file оправдать оптимизацию.
Конфликты имен
Безусловно, создание csharp нескольких пространств имен c-sharp позволяет проекту иметь два csharp класса с одинаковым именем. Но c#.net действительно ли это хорошо? Может visual-c# быть, проще просто запретить visual-c# это? Разрешение двух классов csharp с одинаковым именем создает namespace более сложную ситуацию, когда dot-net в 90% случаев все работает c#.net определенным образом, а затем .cs-file вы внезапно обнаруживаете, что c#.net у вас особый случай. Допустим, у c-sharp вас есть два класса Rectangle, определенные c#-language в отдельных пространствах c# имен:
- класс Project1.Image.Rectangle
- класс Project1.Window.Rectangle
Можно столкнуться с namespace проблемой, когда исходный c#.net файл должен включать оба .cs-file пространства имен. Теперь .net-framework вам нужно записать полное c# пространство имен везде в namespaces этом файле:
var rectangle = new Project1.Window.Rectangle();
Или возиться с c#.net каким-нибудь неприятным оператором namespaces using:
using Rectangle = Project1.Window.Rectangle;
С единым пространством namespacing имен в вашем проекте вы вынуждены visual-c# придумывать разные, и я бы c#-language сказал, более описательные namespaces имена, подобные этим:
- класс Project1.ImageRectangle
- класс Project1.WindowRectangle
И использование namespacing везде одинаково, вам не нужно .net иметь дело с особым случаем, когда .net-framework файл использует оба типа.
с использованием операторов
using Project1.General;
using Project1.Image;
using Project1.Window;
using Project1.Window.Controls;
using Project1.Shapes;
using Project1.Input;
using Project1.Data;
против
using Project1;
Отсутствие .cs-file необходимости постоянно добавлять visual-c# пространства имен при написании namespacing кода. На самом деле это не c# то время, которое требуется, это namespacing перерыв в том, чтобы делать dotnet это и просто заполнять файлы c# множеством операторов using namespaces - для чего? Стоит?
Изменение структуры папок проекта
Если папки namespaces сопоставлены с пространствами namespace имен, тогда путь к папке .net-framework проекта жестко запрограммирован namespace в каждый исходный файл. Это c#.net означает, что любое переименование dotnet или перемещение файла или dotnet папки в проекте требует изменения visual-c# фактического содержимого .net файла. И объявление пространства namespacing имен файлов в этой папке, и dot-net операторы using в целом ряде visual-c# других файлов, которые ссылаются namespaces на классы в этой папке. Хотя csharp сами изменения тривиальны .net-framework с инструментами, обычно это .net-framework приводит к большой фиксации, состоящей visual-c# из множества файлов, классы c# которых даже не изменились.
С c#-language помощью единого пространства c-sharp имен в проекте вы можете visual-c# изменять структуру папок c# проекта, как хотите, без .net изменения самих исходных c#-language файлов.
Visual Studio автоматически сопоставляет пространство имен нового файла с папкой проекта, в которой он создан
К сожалению, я считаю, что namespace проблем с исправлением пространства c# имен меньше, чем хлопот с c# ними. Также у меня появилась dot-net привычка копировать и вставлять c#.net существующий файл, а не использовать c#-language Add-> New.
Intellisense и обозреватель объектов
На мой взгляд, самым .cs-file большим преимуществом использования namespacing нескольких пространств имен .net в больших проектах является namespacing дополнительная организация dot-net при просмотре классов в любом c#-language инструменте, который отображает namespace классы в иерархии пространств dot-net имен. Даже документация. Очевидно, что visual-c# наличие только одного пространства dotnet имен в проекте приводит к .net-framework тому, что все классы отображаются c-sharp в едином списке, а не разбиваются c# на категории. Однако лично namespacing меня никогда не ставили в dotnet тупик или откладывали из-за c#-language отсутствия этого, поэтому c#.net я не считаю это достаточно c# большим преимуществом, чтобы c#-language оправдать использование нескольких .net пространств имен.
Хотя, если namespaces бы я писал большую публичную namespacing библиотеку классов, я бы c#-language , вероятно, использовал бы dotnet несколько пространств имен dot-net в проекте, чтобы сборка выглядела csharp аккуратно в инструментах .cs-file и документации.
c#
.net
namespaces
Должны ли папки в решении соответствовать пространству имен?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.