我的導師改變了我的代碼,這樣的代碼審查:我應該把「使用命名空間」內部或外部C++中的命名空間的
using namespace A; // defined in other files
namespace B{
// do something
}
,而不是像這樣:
namespace B{
using namespace A;
// do something
}
將命名空間放在命名空間之外是否有任何技術原因?
我的導師改變了我的代碼,這樣的代碼審查:我應該把「使用命名空間」內部或外部C++中的命名空間的
using namespace A; // defined in other files
namespace B{
// do something
}
,而不是像這樣:
namespace B{
using namespace A;
// do something
}
將命名空間放在命名空間之外是否有任何技術原因?
在頭文件中,您不應在全局範圍內有using namespace N;
指令。
它會強制所有客戶端代碼上的大量標識符N
。
但它可以在命名空間X中使用。請記住,那麼using namespace X;
的客戶端代碼也將從N
獲取所有標識符。更保守的方法是在命名空間X
中有一堆using
聲明,例如, using N::foo;
。
的替代,當using namespace N;
的原因是N
是一個很長的名字,像Not_short_enough_for_practical_use
,是使用一個命名空間別名–最好是在需要的地方的最小範圍:
namespace N = Not_short_enough_for_practical_use;
您的老師的「更正」移動一個using namespace
出的一個名稱空間在它之前是負值的。
您應該始終努力(在實際限制內)儘量減少任何事物的範圍。
您的問題看起來有點基於意見,取決於貴公司的內部政策。
您可能有一個非常特殊的情況,但這裏常見的建議是聲明每個標識符儘可能接近它的第一次使用。它將最大限度地減少滾動並使您的代碼更易於閱讀。它還會將標識符放在最小和最嵌套的命名空間中,從而防止更廣泛的名稱空間被不必要的標識符淹沒。所以如果我是你,我會要求你的導師對他提出的改變給出非常合理的解釋。
是的,實際上我已經向他展示了我的樣本。非常感謝! –
非常感謝。命名空間別名尤其有用! –