Сообщение Re: using namespace std; от 18.09.2019 5:42
Изменено 18.09.2019 5:53 rg45
Re: using namespace std;
Здравствуйте, _NN_, Вы писали:
_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
_NN>Пространство имён std не резиновые.
_NN>В общем я теперь агитирую только using std::something или явное std::something.
Это в равной степени относится и к другим пространствам имен, не только к std. Using directives (не путать с using declarations) если и могут применяться, то скорее как исключение из правил.
в моей практике можно выделить пожалуй единственный случай, когда я позволяю себе использовать using директиву — это когда какой-нибудь отдлельный юнит тест требует определения каких-то дополнительных специфических сущностей. Вот тогда я создаю в cpp файле, в анонимном пространстве имен дополнительный namespase с таким же именем как функция-член. И после этого использую using директиву внутри одной отдельно взятой функции, даже не во всем cpp файле. То есть такое пространство имен логически можно расссматривать как некое расширение функции-члена:
Могут также оказаться полезными алиасы пространст имен:
_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
_NN>Пространство имён std не резиновые.
_NN>В общем я теперь агитирую только using std::something или явное std::something.
Это в равной степени относится и к другим пространствам имен, не только к std. Using directives (не путать с using declarations) если и могут применяться, то скорее как исключение из правил.
в моей практике можно выделить пожалуй единственный случай, когда я позволяю себе использовать using директиву — это когда какой-нибудь отдлельный юнит тест требует определения каких-то дополнительных специфических сущностей. Вот тогда я создаю в cpp файле, в анонимном пространстве имен дополнительный namespase с таким же именем как функция-член. И после этого использую using директиву внутри одной отдельно взятой функции, даже не во всем cpp файле. То есть такое пространство имен логически можно расссматривать как некое расширение функции-члена:
//SomeTestSuite.cpp
namsespace
{
namsespace TestSomethingTricky
{
// . . .
} // namespace TestSomethingTricky
} // namespace
void SomeTestSuite::TestSomethingTricky()
{
using namespace TestSomethingTricky;
// . . .
}
Могут также оказаться полезными алиасы пространст имен:
namespace fbbq = foo::bar::baz::qux;
Re: using namespace std;
Здравствуйте, _NN_, Вы писали:
_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
_NN>Пространство имён std не резиновые.
_NN>В общем я теперь агитирую только using std::something или явное std::something.
Это в равной степени относится и к другим пространствам имен, не только к std. Using directives (не путать с using declarations) если и могут применяться, то скорее как исключение из правил.
в моей практике можно выделить пожалуй единственный случай, когда я позволяю себе использовать using директиву — это когда какой-нибудь отдлельный юнит тест требует определения каких-то дополнительных специфических сущностей. Вот тогда я создаю в cpp файле, в анонимном пространстве имен дополнительный namespase с таким же именем как функция-член. И после этого использую using директиву внутри одной отдельно взятой функции, даже не во всем cpp файле. То есть такое пространство имен логически можно расссматривать как некое расширение функции-члена:
Во всех остальных случаях либо using declarations, либо полная квалификация имен с пространствами при использовании.
Могут также оказаться полезными алиасы пространст имен:
_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
_NN>Пространство имён std не резиновые.
_NN>В общем я теперь агитирую только using std::something или явное std::something.
Это в равной степени относится и к другим пространствам имен, не только к std. Using directives (не путать с using declarations) если и могут применяться, то скорее как исключение из правил.
в моей практике можно выделить пожалуй единственный случай, когда я позволяю себе использовать using директиву — это когда какой-нибудь отдлельный юнит тест требует определения каких-то дополнительных специфических сущностей. Вот тогда я создаю в cpp файле, в анонимном пространстве имен дополнительный namespase с таким же именем как функция-член. И после этого использую using директиву внутри одной отдельно взятой функции, даже не во всем cpp файле. То есть такое пространство имен логически можно расссматривать как некое расширение функции-члена:
//SomeTestSuite.cpp
namsespace
{
namsespace TestSomethingTricky
{
// . . .
} // namespace TestSomethingTricky
} // namespace
void SomeTestSuite::TestSomethingTricky()
{
using namespace TestSomethingTricky;
// . . .
}
Во всех остальных случаях либо using declarations, либо полная квалификация имен с пространствами при использовании.
Могут также оказаться полезными алиасы пространст имен:
namespace fbbq = foo::bar::baz::qux;