爲什麼在一個小型項目中輸入vehicles::cars::function
很不方便?
記住命名空間應該服務的目的。他們應該避免名稱衝突,而不是其他。
如果你發明了這樣一個令人費解的命名空間結構,我試圖將幾個using namespace ...
放在每個文件的頂部,那麼它就會破壞命名空間的目的。
它也沒有告訴我很多我不知道已經。你打算在你的boats
命名空間中放置什麼,我不知道這個名字本身就是一艘船?我是否需要在命名空間中的任何內容上澄清「這屬於船隻」?很可能不會,然後命名空間沒有意義。
一般情況下,不問什麼問題有與使用任何語言功能,直到你發現了優點是什麼是。每個功能都需要證明自己。那麼你提出的命名空間會解決什麼問題?
如果它不能解決真正的實際問題,那麼這是一個壞主意,不管別的。
我一直認爲看看不同語言的標準庫是有益的。
.NET使用長名稱的深層嵌套命名空間。簡單動態數組的全名是System.Collections.Generic.List<T>
。
因此,沒有人使用命名空間。每個人只需將using System.Collections.Generic
放置在需要使用List的每個文件的頂部。
正因爲如此,遇到困難的那一刻你還會碰到另一個List
class。你會想要做同樣的事情,瞧,你有兩個類衝突。
C++使用非常平坦的namespcae結構,其中名稱空間的名稱也很短。
C++中的等效類只是std::vector
。因此,人們通常會輸入名稱空間前綴,因此,當我將另一個矢量類添加到我的項目中時,它會起作用。沒有名稱衝突,因爲當我想引用標準庫向量時,我使用前綴std::
。
要看什麼東西,更多的東西 – 2010-11-17 18:15:05
另外請注意,在小程序中觀察風格的唯一原因是適應大程序的預期。風格,良好的做法,設計模式等等在小程序中很少涉及,因爲它們中的大多數用於易於維護和容易擴展 – 2010-11-17 18:16:52