2011-12-01 33 views
2

目前我正在研究剛出生的項目。以前的開發人員習慣於爲每個類別命名一個縮短的供應商名稱,即CssMainWindow。 (Css代表酷軟件解決方案)。在命名類時使用名稱空間或預先安裝供應商的名稱?

我的問題是:在這裏不應該使用namespace?然後班級的名字變得更好。

即:

namespace Css { 

    class MainWindow { 
     //... 
    }; 
} 

什麼(廣告| DIS)這兩種方法的有利位置?

回答

1

追加前綴會使類名更長,並且鍵入時間會更長。這是我能想到的唯一缺點。

使用命名空間....以及你可以把

using namespace Css; 

在你的文件的開頭和文件的起源將與一起丟失。

我想最終取決於開發者。我可以想出爲什麼有人想要識別類的兩個原因:

1)對於所有權感。在這種情況下,追加一個前綴是IMO。使用您的代碼的人會知道它是YOUR代碼:)。

2)將類組合在一起 - 在這種情況下,命名空間更有意義。

1

我的建議是:一定要使用的命名空間!

我會告訴命名空間的幾個優點:

// MainWindow.h 
namespace Css { 
    class MainWindow { 
    // ... 
    }; 
}; 

// Other.cpp 
namespace Css { 
    // An advantage is you don't always need to write the namespace explicitly. 
    MainWindow* window; // Not Css::MainWindow or CssMainWindow. 
} 

// In some cpp files 
using namespace Css; // Never do this in header file or it will cause name pollution. 
MainWindow* window; // You don't need to write Css:: in the whole file. 

我不記得使用命名空間的任何缺點。

+0

命名衝突怎麼樣? –

+0

可以通過完全限定類型來解決命名衝突問題嗎?誠實的問題,我不記得,也沒有時間測試。 – Chad

+0

他們可以,但排位比編寫前綴IMO需要更多的時間。 –

1

首先要做的事情。

無論最終選擇什麼,你都應該儘可能地避免在全局命名空間中寫任何東西。你冒險面對那裏的衝突。因此,您的軟件應始終位於其自己的名稱空間中,如果名稱不同於您所依賴的庫中使用的名稱(提醒std已保留),則該名稱更好。

一旦你有這個名字空間,那麼你通常不需要再加前綴。至少,不是與項目名稱。

但是它主要是一個品味的問題,我已經看得過去認爲,這使得它更容易立即識別所在班級從在沒有IDE的來......我個人認爲這是過時的習慣繼承來自C.

相關問題