每隔一段时间,我就会偶然发现一些我正在维护的代码,这些代码挑战了我对代码风格的看法。今天是那种日子之一...
我知道为什么要使用范围运算符来定义全局范围。事实上,这里没有作用域的作用域解析运算符是一个很好的链接,告诉你为什么。
然而,我今天看到了一些让我思考的东西。所有有问题的类都被包装到项目的命名空间中(很好!),但我确实看到了全局范围运算符的大量使用。也就是说,它被用于 C 库中的所有内容(除了 uint8_t 等......是的,程序员使用了这个库的 .h 版本,因为显然他们正在运行的 g++ 版本仍然对新的 C++ 发出警告标准)。这有用吗?我认为这只是浪费字符(提醒我使用 this 指针......除了在复制构造函数和赋值运算符的情况下,它有助于澄清哪个对象是哪个)。我错过了什么吗?当然,有人可以按照 usleep() 或 stderr (我看到“::”的用法最多的地方)来命名一些东西,但不会 他们不知道这样做可能会严重破坏某些东西吗?在什么时候,您会根据作用域运算符说“搞砸”,只是告诉自己在您的命名空间中以某种方式命名函数的人是在自找麻烦?
所以我的问题是......在这种情况下使用全局范围运算符的“正确”(我理解的主观)方式是什么?std 或您自己的名称空间中未包含的所有内容都应该明确定义全局范围吗?我倾向于谨慎行事并使用“std::”来避免使用指令,但是在这里使用全局范围运算符有什么好处吗?为了清楚起见,我倾向于认为它确实提供了这样一个事实,即我们没有从当前命名空间中获取有问题的变量或函数,但我在包括它和没有给出今天的发展之间左右为难。
与往常一样,感谢您的帮助和指导,因为我希望使我的代码更清晰、更易读,并且(当然)更棒。