簡體   English   中英

C++,命名空間最佳實踐

[英]C++, namespace best practice

我的項目分為多個模塊,它們都具有相似的結構,而不是編寫像EntityHandlerInputHandler這樣的類,我想使用命名空間並執行Input::HandlerEntity::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.

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