Пространства имен в C#

Я использую проект ASP.NET MVC, и каждый раз, когда я добавляю класс в папку, он создает действительно длинные пространства имен.

Пример:

Project = Tully.Saps.Data  
Folder = DataAccess/Interfaces  
Namespace = Tully.Saps.Data.DataAccess.Interfaces

Folder = DataAccess/MbNetRepositories  
Namespace = Tully.Saps.Data.DataAccess.MbNetRepositories

Вопрос:
Лучше всего оставить пространство имен в покое и добавить предложение using к классам, которые обращаются к нему, или изменить пространство имен на Tully.Saps.Data для всего в этом проекте?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 444
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

Как вы хотите с этим справиться, действительно зависит от вас. Если вы собираетесь получить доступ к члену пространства имен только один или два раза, то добавление оператора using на самом деле мало для вас.

Если вы собираетесь использовать его несколько раз, то сокращение цепочки пространств имен, вероятно, упростит чтение.

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

Согласно FXCop, и я согласен:

Avoid namespaces with few types

A namespace should generally have more than five types.

также (и это относится к предложению "единого пространства имен" - почти то же самое, что и отсутствие пространства имен)

Declare types in namespaces

A type should be defined inside a namespace to avoid duplication.

  • Пространства имён

.Namespaces помогает нам определить «область действия» набора сущностей в нашей объектной модели или нашем приложении. Это делает их решением разработки программного обеспечения, а не структурой папок. Например, в приложении MVC было бы разумно иметь папки Model / View / Controller и связанные пространства имен. Таким образом, хотя в некоторых случаях возможно, что структура папок будет соответствовать шаблону пространства имен, который мы решили использовать в нашей разработке, это не требуется и может быть не тем, что нам нужно. Каждое пространство имен должно быть индивидуальным.

  • используя заявления

Определение операторов using для пространства имен - это отдельное решение, основанное на том, как часто объект в этом пространстве имен будет упоминаться в коде, и никоим образом не должно влиять на нашу практику создания пространства имен.

Оставь это. Это отличный пример того, как ваша IDE диктует ваш стиль кодирования.

Тот факт, что используемый вами инструмент (Visual Studio) решил, что каждой папке требуется новое пространство имен, не означает, что вы это делаете. Лично я предпочитаю оставлять свои проекты «Данные» как единое пространство имен. Если у меня есть подпапка «Модель», мне не нужны эти файлы в пространстве имен Something.Data.Model, я хочу, чтобы они были в Something.Data.

Другие вопросы по теме