[c#] 我應該把我所有的c ++代碼包裝在自己的命名空間中嗎?


3 Answers

取決於,如果你的代碼是庫代碼,請把它包裝在命名空間中,這是在C ++中的做法。 如果你的代碼只是一個非常簡單的應用程序,不會與其他任何東西進行交互,就像一個hello world的應用程序一樣,不需要名稱空間,因為它是多餘的。

由於名稱空間不是必需的,網絡上的代碼片段和示例很少使用它們,但大多數真實的項目都使用它們。

Question

我來自AC#背景,一切都有自己的命名空間,但這種做法似乎是不常見的C ++世界。 我應該將自己的代碼包裝在自己的命名空間,未命名的命名空間還是沒有命名空間?




如果存在名稱衝突的風險,則只需要名稱空間 - 一些全局可見的函數或變量或類不止一次定義。 否則,你會沒有命名空間 - 只是命名你的類,以便它們不重複運行時庫類,並使全局函數/變量成為一些合理類的靜態成員。




但是這種做法在c ++世界中似乎並不常見

真。 我所看到的所有代碼似乎都被包裝在一個名稱空間中。
我使用Java中看到的相同類型的約定(除了我刪除com)。

在Java中

package com.<Company>.<Product>.<Package>;

在C ++中

namespace <Company>
{
     namespace <Product>
     {
         namespace <Package>
         {
         }
     }
 }



這真的取決於你是否期望有任何衝突。

兩種情況

1)如果你正在創建可能被別人使用的代碼(例如庫),那麼可能會有命名空間衝突,所以使用你自己的命名空間是個好主意。

2)如果你正在使用第三方庫,他們的代碼可能沒有命名空間,並可能與你的衝突。

我也會說,如果你希望你的代碼很大,覆蓋很多不同的領域(數學/物理/渲染),那麼使用名稱空間確實使代碼更易於理解,特別是對於那些沒有明顯分類的類型。




Related