Как организовать структуру проекта .NET Core?
Я новичок в этом деле, возможно вопрос покажется глупым, но для меня это важно. Начал изучать .NET Core, для веб приложений, и при создании проекта в Visial Studio там помимо главного файла с кодом С#, есть ещё папки bin и obj. Я гуглил насчёт этого, но так и не понял, каким образом создавать проект .NET с такими файлами, и как правильно его структурировать?
Допустим у меня есть главный файл, это точка входа программы C# (там где находится класс с методом main) и в том же каталоге находится папка modules, там у меня будут находиться разные модули. Правильный ли это подход? Или нужно эту папку создавать где-то в bin или obj?.
Так как я раньше писал на питоне, там всё просто и понятно, создал папку, в ней файл, и ничего другого там нет, кроме того, что создал ты. На С# нужно создавать какие-то файлы в bin или obj, или эти папки не нужно трогать вообще?
В общем, я думаю что структура проекта может выглядеть так:
- main.cs (
mainmethod) - /bin
- /obj
- /modules1
- someModule.cs
- someModule2.cs
- /modules2
- someModule.cs
Но не уверен в этом, верно ли это? Нужно ли кидать файлы bin и obj на гитхаб, или их нужно игнорировать? Буду очень благодарен за объяснение, заранее благодарю !)
Ответы (1 шт):
Негласно принято правило, что структура каталогов проекта в файловой системе соответствует пространствам имен. Например, пространство имен X.Y.Z соответствует X/Y/Z в структуре каталогов. Это позволяет проще ориентироваться в проекте даже без установленной на компьютере IDE. Это значит, если у вас каталог modules, файлы в ней должны содержать namespace modules.
На деле же "modules" является плохим именем для каталога и пространства имен. Если это не пример, а реальное имя, поменяйте его. Для начала, идентификаторы пространств имен пишут с большой буквы. Кроме того, имя должно быть осмысленным. Обычно принято либо именование по архитектурным слоям в соответствии с принятой методологией проектирования (MyProject.Models, MyProject.Views), либо по функционалу (MyProject.Calculation, MyProject.DataAccess). Отступления возможны, когда в одном пространстве имен слишком много файлов, и каталог приходится дробить далее, либо когда пространства имен слишком длинны и создание каталогов с такими же именами приведет к ошибкам на отдельных компьютерах.
Все эти правила неписаные, Framework Design Guidelines не покрывают структуру исходников, так как они видны только разработчику. В отдельных организациях могут существовать свои стандарты по структуре проектов.
Нужно ли кидать файлы bin и obj на гитхаб, или их нужно игнорировать?
Ответ на этот вопрос сразу станет ясным, если посмотреть на стандартный файл .gitignore, который Github рекомендует для Visual Studio: https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# Build results ... [Bb]in/ [Oo]bj/
Эти каталоги относятся к тем, которые почти всегда игнорируют, так как они содержат выходные и промежуточные файлы сборки. Рекомендуется перед заливкой в Git проекта, тем более большого, не гадать, какие файлы игнорировать, а добавлять стандартный файл .gitignore для Visual Studio, а затем уже штучно по ситуации разрешать какие-то игнорируемые каталоги, если они нужны в индексе. В противном случае есть вероятность, что размер репозитория будет раздуваться из-за мусора в индексе, который вы не предусмотрели.
См. также: How do you organize your projects? - Software Engineering