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
無形中會增加很多開發成本
他這麼一說, 好像又蠻有道理的
不知道大家對這個問題的看法如何呢?