问题标签 [global-namespace]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
511 浏览

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

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

using namespace std;在为 C++ 提供的代码示例中使用 Stack Overflow 似乎达成了共识。我最初是这样学的,后来从来没有教过为什么这是一个问题。

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

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

0 投票
2 回答
1136 浏览

javascript - 如何在不弄乱全局命名空间的情况下将 Javascript(包括 Prototype.js)注入其他站点?

我目前在一个使用 Prototype 库的大型站点项目中,并且已经有大量的 Javascript 代码。

我们现在正在处理一段代码,它将被“注入”到其他人的网站中(想象人们在他们的网站中添加 <script> 标签),然后运行我们的代码并向他们的网站添加一堆 DOM 元素和功能地点。这将有新的代码片段,并且还将重用我们在主站点上使用的大量代码。

我遇到的问题是,在人们的页面中添加一个包含 Prototype 的 <script> 当然并不酷。如果我们在已经使用任何框架的页面中这样做,我们保证会搞砸一切。
jQuery 为我们提供了“重命名”$ 对象的选项,因此它可以很好地处理这种情况,但显然我们没有使用 jQuery,因此我们必须迁移所有内容

现在我正在考虑一些丑陋的选择,我不确定什么是最好的......

  • 重写一切以使用 jQuery,到处都有一个重命名的 $ 对象。
  • 仅使用我们将在“注入”代码中使用的子集创建“新”原型库,并将 $ 重命名为其他内容。然后,我必须再次调整我的代码中会以某种方式共享的部分。
  • 在注入的代码中根本不使用库,以使其尽可能干净,并重写共享代码以完全不使用库。这显然会退化为我们创建自己的图书馆科学怪人,这可能是有史以来最糟糕的情况。

我想知道你们认为我能做什么,以及是否有一些神奇的选择可以解决我所有的问题......

例如,您认为我可以使用 Caja / Cajita 之类的东西来沙箱化我自己的代码并将其与网站的其他部分隔离,并在其中放置 Prototype 吗?还是我完全错过了这一点?

我还读过一次关于小书签的技术,您是否像这样添加代码:

然后你的代码都在你的匿名函数中,你根本没有触及全局命名空间。你认为我可以制作一个包含以下内容的文件:

那行得通吗?例如,它能否实现不弄乱全局命名空间和不破坏使用 jQuery 的站点上的功能的目标?

还是原型太复杂以至于无法像那样隔离它?
(注意:我想我知道这会在任何地方创建闭包并且速度较慢,但​​我不太关心性能,我的代码没有做任何复杂的事情)

0 投票
2 回答
3246 浏览

c# - 当没有编码时,如何在整个项目文件中强制使用 C# 根命名空间?

我想对任何没有将内容包装在显式 .cs 源文件中的内容强制使用根命名空间namespace。换句话说,我想将类和其他命名空间级别的结构保留在默认命名空间之外。
(使用 Visual Studio 在 Windows .NET 环境中工作)

在下面的示例中,我想默认强制Car该类进入MotorIndustry命名空间,即使它没有显式编码命名空间。

Vehicle.cs(有命名空间)

Car.cs(无命名空间/默认)

有没有办法通过 Visual Studio 中的项目设置、AssemblyInfo.cs 文件或其他方式来完成这种“根命名空间”修改行为?

我的理解是 VB.NET 具有这样的功能,但 C# 的行为不同?

关于我为什么要问这个问题的一些上下文:我有数百个类,而程序员忘记将命名空间包装在一些周围。当我从其他项目中引用程序集时,它会污染默认命名空间,其中的类最终会导致一些模棱两可的情况。

0 投票
1 回答
1670 浏览

c++ - Doxygen/C++:命名空间列表中的全局命名空间

我可以在使用 Doxygen 生成的文档的名称空间列表中显示全局名称空间吗?我有一些函数extern "C",它们出现在声明它们的头文件的文档中,但没有出现在命名空间列表中,它给人的印象是它们并不真的存在......

0 投票
9 回答
235676 浏览

c++ - 前置双冒号“::”是什么意思?

我在一个必须修改的类中找到了这行代码:

而且我不知道类名前面的双冒号到底是什么意思。没有它,我会读到:声明tmpCo为指向类对象的指针Configuration......但前面的双冒号让我感到困惑。

我还发现:

0 投票
4 回答
364 浏览

php - 您可以在不使用全局变量的情况下将值传递给 PHP 中包含的文件吗?

我在 PHP 中经常使用的一种模式是设置一些全局变量(例如$page$user$db等),然后包含一个使用这些全局变量的文件。不过,我从来不喜欢为此使用全局变量的想法,所以我正在寻找更好的方法。

显而易见的解决方案是在子文件中定义一个类或函数,并在包含文件后调用它。但在某些情况下这不起作用,例如:

如果我尝试将每个函数包装routing.php在一个函数中并$router作为参数调用它们,那么在多个文件中定义相同的函数名称后会发生冲突。

我没主意了。有没有更好的方法将变量传递给包含的文件而不污染全局命名空间?

0 投票
4 回答
24373 浏览

c++ - 为什么在 C++ 中将“使用命名空间”包含到头文件中是一个坏主意?

在阅读 Bruce Eckel 关于命名空间的“Thinking in C++”时,我遇到了以下语句:

但是,您几乎永远不会在头文件中看到 using 指令(至少不在范围之外)。原因是 using 指令消除了对该特定命名空间的保护,并且效果一直持续到当前编译单元结束。如果您将 using 指令(范围之外)放在头文件中,则意味着这种“命名空间保护”的丢失将发生在包含此头文件的任何文件中,这通常意味着其他头文件。

您愿意通过一些简单的例子帮助我理解上述陈述吗?

0 投票
2 回答
4735 浏览

c++ - “节点”不是全局命名空间的成员?

我不知道代码有什么问题,但在 Visual Studio 中不断收到这些错误消息。

这是头文件;

这是cpp文件;

谢谢...

0 投票
2 回答
131 浏览

winforms - Winform 应用程序中的条件命名空间

我想知道在我的项目中定义名称空间的更好方法。我们有 2 个不同的 winform 项目,并且我们在两个项目中都使用了某些代码文件和表单。所以项目1和2的结构如下:

所以在这里,类 C1(在命名空间 common_fun 下)是两个项目中使用的共享文件。但是,我们需要调用类 C2 的方法 M2,并且为了调用该方法,我们需要在顶部编写条件 using 语句。IE

所以我的问题是有没有更好的方法来包含公共文件的命名空间?将来可能会有 3-4 个项目使用相同的类/表单。

谢谢。

0 投票
4 回答
122 浏览

javascript - javascript 全局命名空间是否会在每次完整回发时被清除?

我一直在阅读有关将全局命名空间与全局变量和函数混淆的危险。

我刚刚读到定义全局函数的“旧”方法是有问题的,尤其是在您有多个开发人员在同一个项目上工作的情况下。

我理解并想写出我能写的最好的代码,但上面的陈述让我感到困惑。

开发人员很少在项目的同一页面上工作,我假设全局命名空间会随着用户更改项目中的页面而清除。

不是这样吗?