簡體   English   中英

我應該在C ++中的命名空間內部或外部放置“using namespace”

[英]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所有標識符。 更保守的方法是在命名空間Xusing一堆聲明 ,例如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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM