目前我正在研究剛出生的項目。以前的開發人員習慣於爲每個類別命名一個縮短的供應商名稱,即CssMainWindow
。 (Css代表酷軟件解決方案)。在命名類時使用名稱空間或預先安裝供應商的名稱?
我的問題是:在這裏不應該使用namespace
?然後班級的名字變得更好。
即:
namespace Css {
class MainWindow {
//...
};
}
什麼(廣告| DIS)這兩種方法的有利位置?
目前我正在研究剛出生的項目。以前的開發人員習慣於爲每個類別命名一個縮短的供應商名稱,即CssMainWindow
。 (Css代表酷軟件解決方案)。在命名類時使用名稱空間或預先安裝供應商的名稱?
我的問題是:在這裏不應該使用namespace
?然後班級的名字變得更好。
即:
namespace Css {
class MainWindow {
//...
};
}
什麼(廣告| DIS)這兩種方法的有利位置?
追加前綴會使類名更長,並且鍵入時間會更長。這是我能想到的唯一缺點。
使用命名空間....以及你可以把
using namespace Css;
在你的文件的開頭和文件的起源將與一起丟失。
我想最終取決於開發者。我可以想出爲什麼有人想要識別類的兩個原因:
1)對於所有權感。在這種情況下,追加一個前綴是IMO。使用您的代碼的人會知道它是YOUR代碼:)。
2)將類組合在一起 - 在這種情況下,命名空間更有意義。
這取決於。如果您的供應商特定的類包含諸如
tuple
,make_tuple
string
,vector
人預計將使用using namespace XXX
時,你可能希望前綴,以避免醜陋ADL衝突,和一般不便。流行的庫已經使用的策略(XString (Xalan),QString (Qt),CString (MFC)等)
我的建議是:一定要使用的命名空間!
我會告訴命名空間的幾個優點:
// 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.
我不記得使用命名空間的任何缺點。
首先要做的事情。
無論最終選擇什麼,你都應該儘可能地避免在全局命名空間中寫任何東西。你冒險面對那裏的衝突。因此,您的軟件應始終位於其自己的名稱空間中,如果名稱不同於您所依賴的庫中使用的名稱(提醒std
已保留),則該名稱更好。
一旦你有這個名字空間,那麼你通常不需要再加前綴。至少,不是與項目名稱。
但是它主要是一個品味的問題,我已經看得過去認爲,這使得它更容易立即識別所在班級從在沒有IDE的來......我個人認爲這是過時的習慣繼承來自C.
命名衝突怎麼樣? –
可以通過完全限定類型來解決命名衝突問題嗎?誠實的問題,我不記得,也沒有時間測試。 – Chad
他們可以,但排位比編寫前綴IMO需要更多的時間。 –