[英]Should I put the “using namespace” inside or outside of a namespace in C++
我的導師在代碼審查中改變了我的代碼:
using namespace A; // defined in other files
namespace B{
// do something
}
而不是像這樣:
namespace B{
using namespace A;
// do something
}
將using命名空間放在命名空間之外是否有任何技術原因?
在頭文件中,你永遠不應該using namespace N;
全球范圍內的指令。
它將在所有客戶端代碼上強制使用N
大量標識符。
但是將它放在命名空間X中是可以的。請記住using namespace X;
客戶端代碼using namespace X;
然后還將獲得N
所有標識符。 更保守的方法是在命名空間X
中using
一堆聲明 ,例如using N::foo;
。
另一種,當using namespace N;
的原因using namespace N;
N
是一個非常長的名稱,就像Not_short_enough_for_practical_use
一樣,是使用命名空間別名 - 最好是在需要它的最小范圍內:
namespace N = Not_short_enough_for_practical_use;
您的教師在其之前將using namespace
移出命名空間的“更正”具有負值。
你應該始終(在實際限制范圍內)努力減少任何事情的范圍。
您的問題看起來有點基於意見,取決於您公司的內部政策。
您可能有一個非常特殊的情況,但這里的常見建議是聲明每個標識符盡可能接近它的首次使用。 它將最小化滾動並使您的代碼更易於閱讀。 此外,它還可以將標識符放在最小和最嵌套的命名空間中,從而防止更廣泛的命名空間被不必要的標識符所淹沒。
所以,如果我是你,我會要求你的導師強烈合理地解釋他提出的改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.