Я использую проект 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 для всего в этом проекте?





Оставьте их в покое и добавьте использования. Вы испытываете проблемы с ручным изменением подобных вещей (труднее отлаживать, несовместимо с другими проектами и т. д.).
Как вы хотите с этим справиться, действительно зависит от вас. Если вы собираетесь получить доступ к члену пространства имен только один или два раза, то добавление оператора 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.