Несколько уровней пространств имен - PullRequest
3 голосов
/ 22 мая 2011

В C # вы можете сделать:

namespace Blah
{
    namespace Foo
    {
    }
}

Или:

namespace Blah.Foo
{
}

Что мне лучше выбрать, если либо?Нижняя часть несколько более чистая с точки зрения фигурных скобок, но я не знаю, обладает ли она такими же свойствами.

Ответы [ 3 ]

2 голосов
/ 22 мая 2011

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

2 голосов
/ 22 мая 2011

Два способа дают одинаковые результаты: код внутри будет находиться в пространстве имен Blah.Foo.

Я бы предпочел вторую версию, потому что она короче и не добавляет ненужного уровня отступа.

Я мог бы увидеть первый использованный вариант, если вы хотите объявить несколько типов из связанных пространств имен в одном файле, но я думаю, что в большинстве случаев это не очень хорошая идея.

2 голосов
/ 22 мая 2011

Оба ведут себя одинаково, и я настоятельно предпочитаю второй.

Обычно люди предпочитают иметь 1 файл .cs на класс / интерфейс или, по крайней мере, для групп похожих (например, для всех реализаций Tuple), что означает, что в любом случае в файле .cs обычно есть 1 пространство имен.

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

...