我们应该教初学者使用全局命名空间吗?

jke*_*eys 0 c++ namespaces global-namespace

注意:我自己几乎都是初学者.这个问题集中在C++的使用上,因为这是我遇到的唯一语言.

using namespace std;为C++提供的代码示例中使用Stack Overflow似乎已达成共识.我最初是以这种方式学习的,并且从未被教过为什么以后这是一个问题.

我只是想知道为什么人们在他们的示例代码中使用前缀std ::有问题.声明全局命名空间似乎是反复无常的,特别是因为许多提问者将示例中的代码复制+粘贴到他们的IDE中.命名空间是一个高级编程概念,但我认为最好为std ::添加前缀,然后在初学者询问时解释它.

为什么这种用法教会初学者是否可以接受?

jal*_*alf 7

我认为答案是"它并不重要".这是一个微妙的,以后很容易拿起和纠正.

我所知道的每个初学者的编程文本都进行了大量的简化,并使用大量的手工操作来隐藏很多正在发生的事情("这条线是神奇的.只需键入它,我们将讨论它后来做什么") .

初学者有足够的担心,而不必完全理解他们的代码中的所有内容,以及如何/为什么它是坏的,所以这些简化往往是好事.

虽然在这种情况下我有点同意你的观点.

添加std::前缀不是什么大问题,它会使命名空间显得神秘.using namespace std实际上很难解释和理解.

另一方面,它占用空间并为代码增加噪声,应尽可能简洁明了.

  • +1我同意你,特别是因为最后一行:) (2认同)
  • 我不明白你如何同意或不同意最后一行.我觉得这很实际.在针对初学者的代码示例中,您*需要干净,简洁的代码,我不知道任何人都可以对此提出异议.并且添加`std ::`前缀*会占用空间并添加非必要的噪声.这些只是事实.主观部分是这是否足以证明只使用`namespace std`,我没有在那里得出任何结论.;) (2认同)