C++ 有 namespace 的设定
主要的目的是用来防止命名冲突问题的发生
但今天跟个朋友讨论
假设有两个 module 它们的功能与 function 类似 (但仍有所不同)
E.g.
namespace A {
void Func1();
void Func2();
...
}
namespace B {
void Func1();
void Func2();
...
}
是否有必要将 FuncN 前面加上 A/B 这个前缀? (Func1 => AFunc1, BFunc1)
我是认为这样有点累赘
但朋友提出了一个观点: 假设一个人想要找用到某个 function 功能的地方
加上前缀的情况他可以很轻易的找到呼叫 A::Func1 的人 (例如: grep AFunc1 ...)
如果单单只用 Func1 而没有前缀, 在有 using namespace 的情况下会找到很多噪声
你必须要去看真正呼叫它的档案才知道它是查叫哪个版本的 Func1
无形中会增加很多开发成本
他这么一说, 好像又蛮有道理的
不知道大家对这个问题的看法如何呢?