Re: using namespace std;
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.09.19 04:37
Оценка: 3 (1) +12
Здравствуйте, _NN_, Вы писали:

_NN>Есть ещё кто пишет using namespace std ?


_NN>https://en.cppreference.com/w/cpp/concepts/predicate


Я много лет за такое по рукам бил, особенно, если кто-то додумывался учудить подобное в заголовочном файле. Привести в чувства проект с горой "using namespace std" то еще веселье
Re[3]: using namespace std;
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 18.09.19 05:33
Оценка: 3 (1) +6
Здравствуйте, Михaил, Вы писали:

KP>>Я много лет за такое по рукам бил, особенно, если кто-то додумывался учудить подобное в заголовочном файле. Привести в чувства проект с горой "using namespace std" то еще веселье


М>А изза чего начинаются проблемы? В заголовочных вред using понимаю, но чем он плох в cpp?


А там начинается веселье уровня "откуда ты сказал". Конфликт имен и начинают подставляться вызовы функций, которые ты не ожидаешь. Вот крайне показательный пример.

По большому счету, единственное что я считаю допустимым делать с пространствами имен это создавать сокращения. Такое на проекте скорее положительно сказывается, если не перестараться, конечно.

namespace fs = boost::filesystem;
Отредактировано 18.09.2019 5:48 kaa.python . Предыдущая версия . Еще …
Отредактировано 18.09.2019 5:47 kaa.python . Предыдущая версия .
Re[3]: using namespace std;
От: Masterspline  
Дата: 22.09.19 12:37
Оценка: +1 -2 :)))
M>>Другое тяжелое последствие привыкания к примерам из книжек — любовь к египетским скобкам.
S>"-1"и "" Не надо свою вкусовщину выдавать за истину в последней инстанции

Уверен, ты понимаешь, что мне насрать на твои "-1". Меня вообще мало интересуют посты без практически полезной информации.

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

И я в курсе, что есть много любителей египетских скобок.
Отредактировано 22.09.2019 12:55 Ssd13 . Предыдущая версия .
using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 18.09.19 04:15
Оценка: 4 (2) +3
После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
Пространство имён std не резиновые.

В общем я теперь агитирую только using std::something или явное std::something.

Есть ещё кто пишет using namespace std ?

https://en.cppreference.com/w/cpp/concepts/predicate
http://rsdn.nemerleweb.com
http://nemerleweb.com
Отредактировано 18.09.2019 4:25 _NN_ . Предыдущая версия .
Re[2]: using namespace std;
От: rg45 СССР  
Дата: 18.09.19 06:07
Оценка: +4
Здравствуйте, niXman, Вы писали:


_NN>>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.


X>т.е. ранее ты сам определил predicate в std?


Да почему в std-то? В том пространстве имен, где использовалась using директива же.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re[2]: using namespace std;
От: rg45 СССР  
Дата: 18.10.19 05:13
Оценка: 11 (2) +1
Здравствуйте, Коваленко Дмитрий, Вы писали:


КД>У меня есть вопрос по этой теме.

КД>Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?
КД>Например, для std::string.

Есть такой механизм, Argument Dependent Lookup (ADL). Когда компилятор видит в коде вызов функции, он ищет кандидатов на подставновку, в том числе, и в пространствах имен фактических параметров. Это также относится и к операторам, поскольку они и есть функции по сути. В стандарте языка это описано в пункте 6.4.2 Argument-dependent name lookup.

Хорошо и подробно описано здесь:
https://en.cppreference.com/w/cpp/language/adl

Также полезно почитать:
http://programming-lang.com/ru/comp_programming/satter/0/j118.html

Открытый интерфейс класса образуют не только открытые функции-члены, но и функции, не являющиеся членами. Принцип Интерфейса гласит: для класса X все функции (включая функции, не являющиеся членами), которые "упоминают X" и "поставляются вместе с X" в одном и том же пространстве имен, являются логической частью X, поскольку образуют часть интерфейса X

--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 18.10.2019 5:59 rg45 . Предыдущая версия . Еще …
Отредактировано 18.10.2019 5:29 rg45 . Предыдущая версия .
Отредактировано 18.10.2019 5:24 rg45 . Предыдущая версия .
Отредактировано 18.10.2019 5:20 rg45 . Предыдущая версия .
Re[3]: using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 18.09.19 05:25
Оценка: +3
М>А изза чего начинаются проблемы? В заголовочных вред using понимаю, но чем он плох в cpp?

Проблема из-за того, что с каждым новым стандартом в пространство имён добавляют всё больше и больше символов, тем самым увеличивая риск пересечения локальных имён.
Вот у нас был predicate, с новым стандартом появился std::predicate и код перестал собираться.
И это не первый раз, а дальше будет только хуже
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: using namespace std;
От: Vamp Россия  
Дата: 18.09.19 12:00
Оценка: +1 :))
.

_NN>Есть ещё кто пишет using namespace std ?


Нет, мы так не делаем. А еще мы моем руки перед едой и чистим зубы.

Ну что за детсад, ей-богу? 20 лет везде пишут, что using namespace std в namespace scope — зло. И вдруг в конце 2019 года внезапно приходит осознать что таки "папа был прав".
Да здравствует мыло душистое и веревка пушистая.
Re: using namespace std;
От: Masterspline  
Дата: 19.09.19 02:57
Оценка: +1 -1 :)
_NN>Есть ещё кто пишет using namespace std ?

_NN>https://en.cppreference.com/w/cpp/concepts/predicate


Это последствия копирования из книг учебных примеров. Там ради компактности кода используют что-то типа
cout << "Hello, Wolrd!\n";

При этом using namespace std; даже не пишется, а подразумевается. Вот народ и получает синдром утенка, от которого сложно избавиться. Умение критически относиться к авторитету приходит со временем. Нужно с одной стороны сохранить интерес к изучаемому предмету, чтобы усваивать полезную информацию, однако, с другой быть готовым к тому, что автор может быть не прав, и отфильтровывать нерелевантную отсебятину, а тут опыт требуется.

Другое тяжелое последствие привыкания к примерам из книжек — любовь к египетским скобкам. В книжке учебный пример ты все равно читаешь внимательно до каждой запятой, а в production коде скобка на отдельной строке очень помогает структурировать код для быстрого просмотра. В некоторых языках даже прикручивают обязательный линтер, который не даст собрать код, если скобка не там. К счастью в моем любимом Kotlin это лишь на уровне рекомендаций от создателей языка (видимо, сказывается ИТМО'шное прошлое).

Вообще, примеры из книжек нехило-так травмируют психику студентов-программистов.
Re[3]: using namespace std;
От: rg45 СССР  
Дата: 18.09.19 06:17
Оценка: 6 (1) +1
Здравствуйте, Михaил, Вы писали:

KP>>Я много лет за такое по рукам бил, особенно, если кто-то додумывался учудить подобное в заголовочном файле. Привести в чувства проект с горой "using namespace std" то еще веселье


М>А изза чего начинаются проблемы? В заголовочных вред using понимаю, но чем он плох в cpp?


Неприятности могут быть разные. Самое простое — это ошибки компиляции из-за конфликта имен. Но это пол беды, поскольку это не пройдет незамеченным. Гораздо хуже, когда в ADL, вдруг начинает выигрывать совсем не та функция, на которую ты рассчитываешь. Особенно это актуально для функций операторов (сравнения, арифметических, ввода-вывода и пр.). В этом случае компилятор уже не поможет и ты долго и нудно можешь искать причину, по которой программа работает не так, как нужно. Ну и, пожалуй, главная проблема в том, что то, что сегодня нормально работает, завтра может поломаться в результате безобидных, на первый взгляд, изменений в другом пространстве имен. Избыточная связность кода — вот, что плохо.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 18.09.2019 6:42 rg45 . Предыдущая версия . Еще …
Отредактировано 18.09.2019 6:24 rg45 . Предыдущая версия .
Отредактировано 18.09.2019 6:20 rg45 . Предыдущая версия .
Отредактировано 18.09.2019 6:18 rg45 . Предыдущая версия .
Re: using namespace std;
От: RonWilson Россия  
Дата: 18.09.19 04:42
Оценка: +2
Здравствуйте, _NN_, Вы писали:

_NN>В общем я теперь агитирую только using std::something или явное std::something.


+1

_NN>Есть ещё кто пишет using namespace std ?



давно такого не видел, разве что в интернетах, но по глазам сразу такое бьет, противно смотреть
Re[2]: using namespace std;
От: Mr.Delphist  
Дата: 18.09.19 09:47
Оценка: +2
Здравствуйте, lpd, Вы писали:

lpd>Если у проекта Super Application аббревиатура SA, то я называл свои классы не predicate, а SAPredicate, и о проблемах пересечения namespace узнал из этого топика. Но вы можете продолжать дуть щеки от того, что ваш код пестрит ::, <> и &&. Чем сложнее код, тем сильнее программист, воистину.


А затем код вытаскивается в shared library, и опа! Что такое SA? Почему? Зачем? Да и авторам Silver Application тоже грозит name clash с этим Super Application.

Из наиболее известных ляпов такого рода — Apple со своими префиксами NS (Next Step). Проект Next Step давно неактуален, но "ложечки остались". Новые API не используют NS-префикс, и теперь у Apple SDK очень полосатый naming convention.
Отредактировано 18.09.2019 12:44 Mr.Delphist . Предыдущая версия .
Re[3]: using namespace std;
От: AleksandrN Россия  
Дата: 19.09.19 10:01
Оценка: +2
Здравствуйте, LaptevVV, Вы писали:

LVV>Они, естественно, не понимают, за что такой беспредел — нельзя писать в заголовочных файлах.

LVV>Тащу Герба Саттера, читаю совет 59 из евоной с Александреску книжки.
LVV>Все равно пишут, сволочи...
LVV>Вычищаю безжалостно и возвращаю лабу на доработку — ВСЕГДА
LVV>Теперь буду сюда посылать. На 4 буквы...

Всё равно будут писать, пока сами по граблям не походят. Тогда вспомнят твои советы и исправятся.
Re: using namespace std;
От: rg45 СССР  
Дата: 18.09.19 05:42
Оценка: 2 (1)
Здравствуйте, _NN_, Вы писали:

_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;
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 18.09.2019 6:10 rg45 . Предыдущая версия . Еще …
Отредактировано 18.09.2019 5:53 rg45 . Предыдущая версия .
Отредактировано 18.09.2019 5:45 rg45 . Предыдущая версия .
Re: using namespace std;
От: lpd Черногория  
Дата: 18.09.19 08:42
Оценка: :)
Здравствуйте, _NN_, Вы писали:

_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.

_NN>Пространство имён std не резиновые.

Мне на С бы ваши С++ проблемы

_NN>В общем я теперь агитирую только using std::something или явное std::something.


_NN>Есть ещё кто пишет using namespace std ?


Если у проекта Super Application аббревиатура SA, то я называл свои классы не predicate, а SAPredicate, и о проблемах пересечения namespace узнал из этого топика. Но вы можете продолжать дуть щеки от того, что ваш код пестрит ::, <> и &&. Чем сложнее код, тем сильнее программист, воистину.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re: using namespace std;
От: SaZ  
Дата: 18.09.19 08:42
Оценка: +1
Здравствуйте, _NN_, Вы писали:

_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.

_NN>Пространство имён std не резиновые.

_NN>В общем я теперь агитирую только using std::something или явное std::something.


_NN>Есть ещё кто пишет using namespace std ?


_NN>https://en.cppreference.com/w/cpp/concepts/predicate


Максимум, делаю using в локальной области видимости (не больше, чем функция). Например, если дофига работы с временем, то внутри метода можно сразу развернуть chrono.
Re: using namespace std;
От: TimurSPB Интернет  
Дата: 18.09.19 09:53
Оценка: -1
_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.
clang тоже не одобряет.


https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL58-CPP.+Do+not+modify+the+standard+namespaces — хорошие пояснения по теме.
Make flame.politics Great Again!
Re[2]: using namespace std;
От: Skorodum Россия  
Дата: 21.09.19 19:12
Оценка: +1
Здравствуйте, Masterspline, Вы писали:

M>Другое тяжелое последствие привыкания к примерам из книжек — любовь к египетским скобкам.

"-1"и "" Не надо свою вкусовщину выдавать за истину в последней инстанции
Re[4]: using namespace std;
От: Skorodum Россия  
Дата: 23.09.19 08:32
Оценка: -1
Здравствуйте, Masterspline, Вы писали:

M>Уверен, ты понимаешь, что мне насрать на твои "-1".

"Три дня я гналась за вами, чтобы сказать как вы мне безразличны!"

M>Меня вообще мало интересуют посты без практически полезной информации.

Ну вот твои персональные предпочтения расстановки скобочек являются эталонным примером этого.

M>Когда будет, что сказать по делу — приходи.

на кывте является хорошим тоном объяснять оценку "-1" в профильных форумах

M>Я рассказал, чем плохи на практике египетские скобки

Пока ты рассказал о своих предпочтениях в довольно агрессивной манере.

M>а от тебя увидел лишь понты и пустой трындеж.

Ок.

M>Если для тебя читаемость кода — это вкусовщина, то для меня нет.

У тебя проблемы с чтением когда Chrome, Qt, etc? Надо больше практики

M>И я в курсе, что есть много любителей египетских скобок.

Ну так может это не так принципиально как ты думаешь?
Re[3]: using namespace std;
От: Vamp Россия  
Дата: 18.10.19 10:56
Оценка: +1
Здравствуйте, rg45, Вы писали:


R>Есть такой механизм, Argument Dependent Lookup (ADL).


Добавлю — механизм придуманный специально для того, чтобы работали операторы человеком по-имени Кениг. Оттого и называется иногда Koenig Lookup.
Да здравствует мыло душистое и веревка пушистая.
Re[5]: using namespace std;
От: B0FEE664  
Дата: 18.10.19 11:15
Оценка: :)
Здравствуйте, Skorodum, Вы писали:

M>>а от тебя увидел лишь понты и пустой трындеж.

S>Ок.
Это потому, что вы никак не доказываете своего утверждения.

M>>Если для тебя читаемость кода — это вкусовщина, то для меня нет.

S>У тебя проблемы с чтением когда Chrome, Qt, etc? Надо больше практики
У меня нет проблем с чтением кода. У меня есть наблюдение: в коде с "египетским скобкам" я нахожу ошибки чаще, чем в коде где скобки выровнены по столбцам и строкам.
И каждый день — без права на ошибку...
Отредактировано 18.10.2019 12:01 B0FEE664 . Предыдущая версия .
Re[2]: using namespace std;
От: Михaил  
Дата: 18.09.19 05:03
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, _NN_, Вы писали:


_NN>>Есть ещё кто пишет using namespace std ?


_NN>>https://en.cppreference.com/w/cpp/concepts/predicate


KP>Я много лет за такое по рукам бил, особенно, если кто-то додумывался учудить подобное в заголовочном файле. Привести в чувства проект с горой "using namespace std" то еще веселье


А изза чего начинаются проблемы? В заголовочных вред using понимаю, но чем он плох в cpp?
Re: using namespace std;
От: niXman Ниоткуда https://github.com/niXman
Дата: 18.09.19 06:02
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.


т.е. ранее ты сам определил predicate в std?

_NN>Есть ещё кто пишет using namespace std ?


только в хелловордах =)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[3]: using namespace std;
От: niXman Ниоткуда https://github.com/niXman
Дата: 18.09.19 06:08
Оценка:
Здравствуйте, rg45, Вы писали:

R>Да почему в std-то? В том пространстве имен, где использовалась using директива же.


понял)
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: using namespace std;
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 18.09.19 06:34
Оценка:
Здравствуйте, _NN_, Вы писали:


_NN>Есть ещё кто пишет using namespace std ?



Никогда так не делал и не планирую
Маньяк Робокряк колесит по городу
Re[2]: using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 18.09.19 10:35
Оценка:
Здравствуйте, TimurSPB, Вы писали:

_NN>>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.

TSP>clang тоже не одобряет.
Так не я же добавил predicate в std, а стандарт
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: using namespace std;
От: Ops Россия  
Дата: 18.09.19 11:22
Оценка:
Здравствуйте, niXman, Вы писали:

_NN>>Есть ещё кто пишет using namespace std ?


X>только в хелловордах =)


Так новички по ним и учатся
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: using namespace std;
От: andyp  
Дата: 18.09.19 13:36
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>В общем я теперь агитирую только using std::something или явное std::something.

_NN>Есть ещё кто пишет using namespace std ?

Древнее зло.
Re[2]: using namespace std;
От: LaptevVV Россия  
Дата: 18.09.19 15:18
Оценка:
KP>Я много лет за такое по рукам бил, особенно, если кто-то додумывался учудить подобное в заголовочном файле. Привести в чувства проект с горой "using namespace std" то еще веселье
Вот спасибо.
Я 2 курсу про это дело с первой лабы талдычу.
Они, естественно, не понимают, за что такой беспредел — нельзя писать в заголовочных файлах.
Тащу Герба Саттера, читаю совет 59 из евоной с Александреску книжки.
Все равно пишут, сволочи...
Вычищаю безжалостно и возвращаю лабу на доработку — ВСЕГДА
Теперь буду сюда посылать. На 4 буквы...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: using namespace std;
От: rg45 СССР  
Дата: 19.09.19 05:21
Оценка:
Здравствуйте, Masterspline, Вы писали:

M>Это последствия копирования из книг учебных примеров. Там ради компактности кода используют что-то типа

M>
M>cout << "Hello, Wolrd!\n";
M>

M>При этом using namespace std; даже не пишется, а подразумевается. Вот народ и получает синдром утенка, от которого сложно избавиться. Умение критически относиться к авторитету приходит со временем. Нужно с одной стороны сохранить интерес к изучаемому предмету, чтобы усваивать полезную информацию, однако, с другой быть готовым к тому, что автор может быть не прав, и отфильтровывать нерелевантную отсебятину, а тут опыт требуется.

M>...


M>Вообще, примеры из книжек нехило-так травмируют психику студентов-программистов.


+1

А есть еще горе-преподы. Живой пример: младшенькая моя приступила к занятиям на втором курсе примата и вот, алилуйя, начали они изучать C++. Вчера притащила учебный пример реализации комплексного числа, написанного преподавателем, с заданием "разобраться в программе". Я глянул, а там и пресловутое "using namespace std" тут как тут, помимо прочего. Используется правда в области видимости функций, но только лишь из-за пары несчастных std::cout и std::endl. Я ей тут же показываю это обсуждение, рассказываю про грабли. Есть, конечно, еще надежда, что препод в какой-то момент скажет им: "дети, using директивы — это зло...". Но это вряд ли, я чувствую.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 19.09.2019 11:08 rg45 . Предыдущая версия . Еще …
Отредактировано 19.09.2019 5:24 rg45 . Предыдущая версия .
Отредактировано 19.09.2019 5:23 rg45 . Предыдущая версия .
Отредактировано 19.09.2019 5:23 rg45 . Предыдущая версия .
Отредактировано 19.09.2019 5:22 rg45 . Предыдущая версия .
Re[2]: using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 19.09.19 07:11
Оценка:
Здравствуйте, Masterspline, Вы писали:

M> К счастью в моем любимом Kotlin это лишь на уровне рекомендаций от создателей языка (видимо, сказывается ИТМО'шное прошлое).

Такая же рекоммендация как в JavaScript добровольно-принуждённая
Боюсь придётся смириться и писать как от вас этого ожидают все остальные программисты включая создателей языка.

Formatting

Use 4 spaces for indentation. Do not use tabs.

For curly braces, put the opening brace in the end of the line where the construct begins, and the closing brace on a separate line aligned horizontally with the opening construct.

if (elements != null) {

    for (element in elements) {

        // ...

    }

}


(Note: In Kotlin, semicolons are optional, and therefore line breaks are significant. The language design assumes Java-style braces, and you may encounter surprising behavior if you try to use a different formatting style.)

https://kotlinlang.org/docs/reference/coding-conventions.html#formatting
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: using namespace std;
От: Андруха Россия  
Дата: 19.09.19 16:05
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>После того как в очередной раз сломали код из-за добавления новых символов в std , как std::predicate, моё терпение лопнуло.

_NN>Пространство имён std не резиновые.

_NN>В общем я теперь агитирую только using std::something или явное std::something.


_NN>Есть ещё кто пишет using namespace std ?


_NN>https://en.cppreference.com/w/cpp/concepts/predicate




Для std:: — никогда
Для остальных namespaces — только в сильно локальных скопах (к примеру — функции) и только если префикс из неймспейсов сильно длинный получается (3-4 вложенных неймспейса)
Re[4]: using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 19.09.19 16:14
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>Всё равно будут писать, пока сами по граблям не походят. Тогда вспомнят твои советы и исправятся.


Надо грабли аккуратно просто расставить.
Скажем назвать переменную predicate, string_view, launder, begin и т.п. со стандартом С++03 всё соберётся.
Потому берём С++11, там одна часть программы отвалится, а потом переходим на С++17 и ещё.
Со второго раза дойдёт.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: using namespace std;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 20.09.19 08:25
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Есть ещё кто пишет using namespace std ?


У меня торчит в глобальном хедере (который юзается при формировании pch).

Но последние несколько лет (три или четыре), планомерно обновляю код с явным указанием std:: и прочих (своих) пространств имен.

Причем не из-за конфликтов, а из за тупняка подсветки символов в VS.

Может через год/два и изничтожу этот using namespace std

UPD. Вообще про правила организации и пространств имен я читал, наверное, лет 20 назад. Тогда думал — что-то дядьки мудряд. А въехал только в 2011 году когда с чистого листа начал программировать на шарпе. Теперь вот, последние девять лет, привожу в порядок код на плюсах
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Отредактировано 20.09.2019 8:51 DDDX . Предыдущая версия . Еще …
Отредактировано 20.09.2019 8:43 DDDX . Предыдущая версия .
Re[2]: using namespace std;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 20.09.19 08:53
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

_NN>>Есть ещё кто пишет using namespace std ?


КД>У меня торчит в глобальном хедере (который юзается при формировании pch).


КД>Но последние несколько лет (три или четыре), планомерно обновляю код с явным указанием std:: и прочих (своих) пространств имен.


Перечитал, подумал...

По хорошему надо бы не std::, а ::std:: указывать.

Поставлю себе

-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: using namespace std;
От: rg45 СССР  
Дата: 20.09.19 09:40
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:

КД>По хорошему надо бы не std::, а ::std:: указывать.

КД>Поставлю себе
КД>

В определениях макросов так и делают часто. Ну а для обычного кода это уже перебор, имхо.
--
Не можешь достичь желаемого — пожелай достигнутого.
Re: using namespace std;
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 18.10.19 04:20
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Есть ещё кто пишет using namespace std ?


У меня есть вопрос по этой теме.

Как без "using namespace std" находятся свободные операторы сравнения (==, !=, ...) для классов определенных в пространстве std?

Например, для std::string.

Помню в (далеком) прошлом (борландовский) компилятор вроде без "using namespace std" не видел их.

Наверное, это была одна из причин, по которой я добавил
Автор: Коваленко Дмитрий
Дата: 20.09.19
этот глобальный "using namespace std"

Но сейчас достаточно большой проект откомпилировался без проблем...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[6]: using namespace std;
От: Skorodum Россия  
Дата: 18.10.19 11:22
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Это потому, что вы никак не доказываете своего утверждения.

Бремя доказаетельства лежит на утверждающих, что один стиль однозначно лучше другого

BFE>У меня нет проблем с чтением кода. У меня есть наблюдение: в коде с "египетским скобкам" я нахожу ошибки чаще, чем в коде где скобки выравнены по столбцам и строкам.

Анекдотные доказательства
Re[7]: using namespace std;
От: B0FEE664  
Дата: 18.10.19 11:59
Оценка:
Здравствуйте, Skorodum, Вы писали:

BFE>>У меня нет проблем с чтением кода. У меня есть наблюдение: в коде с "египетским скобкам" я нахожу ошибки чаще, чем в коде где скобки выровнены по столбцам и строкам.

S>Анекдотные доказательства
Это не доказательство. Это личное наблюдение, для статистики ничго не значащие.

А вот, наверное, с помощью анализатора PVS-Studio можно провести исследование, в каком коде плотность ошибок больше: с "египетским скобкам" или с Allman style. Где разработчики мерчендайзеры анализатора? Что скажите?
И каждый день — без права на ошибку...
Re[8]: using namespace std;
От: Skorodum Россия  
Дата: 18.10.19 12:10
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Это не доказательство. Это личное наблюдение, для статистики ничго не значащие.

Предположу, что кода в K&R стиле намного больше (с ходу: Linux, boost, Qt).

BFE>А вот, наверное, с помощью анализатора PVS-Studio можно провести исследование, в каком коде плотность ошибок больше: с "египетским скобкам" или с Allman style. Где разработчики мерчендайзеры анализатора? Что скажите?

Тут много других факторов, которые влияют на вероятность ошибки намного сильнее, чем стиль скобок, для их исключения надо проверить много проектов
Re[9]: using namespace std;
От: B0FEE664  
Дата: 18.10.19 13:35
Оценка:
Здравствуйте, Skorodum, Вы писали:

BFE>>А вот, наверное, с помощью анализатора PVS-Studio можно провести исследование, в каком коде плотность ошибок больше: с "египетским скобкам" или с Allman style. Где разработчики мерчендайзеры анализатора? Что скажите?

S>Тут много других факторов, которые влияют на вероятность ошибки намного сильнее, чем стиль скобок, для их исключения надо проверить много проектов

Либо корреляция есть, либо нет, а про факторы — это следующий этап. Может корреляции нет, но я не верю. Я думаю, что должно быть примерно так же как с использованием пробелов.

PS Корреляцию 'плотность ошибок'/'использование пробелов' тоже было бы интересно посмотреть...
И каждый день — без права на ошибку...
Отредактировано 18.10.2019 13:37 B0FEE664 . Предыдущая версия .
Re[4]: using namespace std;
От: _NN_ www.nemerleweb.com
Дата: 21.10.19 12:06
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Здравствуйте, rg45, Вы писали:



R>>Есть такой механизм, Argument Dependent Lookup (ADL).


V>Добавлю — механизм придуманный специально для того, чтобы работали операторы человеком по-имени Кениг. Оттого и называется иногда Koenig Lookup.

Andrew Richard Koenig
По фамилии.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.