Использование «использования пространства имен» при объявлении этого пространства имен

0

Предположим, у меня есть следующие файлы:

// SomeClass.h
namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
Example::SomeClass Example::SomeClass::SomeFunction()
{
    ...
}

Были ли какие-либо последствия для добавления "using namespace Example"? перед пространством имен в SomeClass.h, чтобы исключить необходимость добавления оператора области "Example ::" к вещам в файле Someclass.cpp? Даже если не будет никаких козней, будет ли это считаться плохой практикой кодирования?

Это изменение будет следующим:

// SomeClass.h
using namespace Example;

namespace Example
{
    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

// SomeClass.cpp
SomeClass SomeClass::SomeFunction()
{
    ...
}
  • 1
    Я использую это все время в .cpp файлах. Я еще не видел никаких недостатков. Однако я не использовал их в .h файлах. Имейте в виду, что вы не можете использовать using namesapce Example; до того, как пространство имен введено.
  • 0
    Не подумал добавить это в .cpp, спасибо.
Показать ещё 1 комментарий
Теги:
namespaces
coding-style

1 ответ

1
Лучший ответ

Нет, пожалуйста, не using namespace...; в глобальной области. Вы можете просто сделать это:

SomeClass.h

// using namespace Example; // never here please

namespace Example
{
    using namespace OtherExample; // this is okay (not global)

    class SomeClass
    {
        ...
        SomeClass someFunction();
        ...
    };

}

SomeClass.cpp

namespace Example // same as in .h
{
    using namespace OtherExample; // this is okay (not global)

    SomeClass SomeClass::SomeFunction()
    {
        ...
    }
}

И я также предлагаю потенциально огромные пространства имен, такие как std:: никогда не использовать using namespace std; даже внутри ваших собственных пространств имен, потому что они просто перетаскивают слишком много общих имен символов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню