[英]C++, namespace best practice
我的項目分為多個模塊,它們都具有相似的結構,而不是編寫像EntityHandler
和InputHandler
這樣的類,我想使用命名空間並執行Input::Handler
和Entity::Handler
。 現在這一切對我來說似乎都很好,但這些名稱空間也嵌套在另一個名稱空間中,該名稱空間也有一個Handler
類!
有人說這是不好的做法,可能會造成混淆,但作為我風格的一部分,我從不使用using <namespace>;
關鍵字,所以它總是看起來很明確。 你認為這會是一個好的做法嗎?如果不是,你能告訴我這可能會在哪里反咬我一口嗎?
如果之前有人問過這個問題,我很抱歉,我看過的地方沒有很好地解釋為什么或為什么不這樣做!
我認為最好在不使用的情況下完全限定命名空間,因為它可以在閱讀和/或編譯代碼時消除一些錯誤。 在許多教程中,建議在 function 聲明中使用完全限定的命名空間,即 void doSome (std::vector& data),而不是使用命名空間 std + doSome (vector& data)。 完全限定命名空間是一種很好的做法,因為它可以減少編譯階段的類型解析歧義錯誤。 考慮以下示例:
class A {
private:
Super::Handler* _handlerOne;
Super::Entity::Handler* _handlerTwo;
};
當您使用以下方法時,很難做到同樣的事情:
using namespace Super;
using namespace Super::Handler;
class A {
private:
Handler* _handlerOne; // What type compiler place here ??? , we don't know ...
Handler* _handlerTwo; // What type compiler place here ??? , we don't know ...
};
更少的歧義 - 更好的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.