2013-04-23 50 views
2

是否使用命名空間以及文件夾來組織代碼矯枉過正?是否使用命名空間以及文件夾來組織代碼矯枉過正?

例子:

Folder Structure: 
Engine (Root) 
--Audio 
--Exceptions 
--Game 
--GFX 
--Input 
--Math 
--Messages 
--Physics 
--Time 
--[global headers] 

所有的類都包含在一個命名空間[root]::防止碰撞與std::和第三方代碼。 Math文件夾包含[root]::Math::名稱空間中包含的一些幫助程序(免費)函數的頭文件,並且在[root]::AudioHandler::名稱空間中Audio具有一些更多的幫助程序(免費)函數。

我應該將每個文件夾中的類放入類似描述的命名空間嗎? (即Physics文件夾中的類也將位於[root]::Physics::名稱空間中。)

+0

是的,它是過度的。你會厭倦寫非常快的命名空間。想象一下,每次寫入'root :: Math :: vector3f'。 – yngccc 2013-04-23 03:21:13

+0

作爲記錄,visual studio c#將其作爲其標準功能的一部分。有時很煩人,當我想要解決方案文件夾,但沒有名稱空間的變化。 – 2013-04-23 03:23:39

+0

@yngum這就是'使用名稱空間'和名稱空間別名派上用場的地方 - 如果明智地使用。 – 2013-04-23 03:25:07

回答

2

命名空間組織邏輯接口,目錄爲「物理」文件。

單個命名空間中的代碼越多,其相對穩定和協調性就越重要;如果標識符不穩定且不協調,您可能會在更改合併時看到衝突。根據您對此類衝突的體驗或感受,您可以選擇您的名稱空間。

std::是一個非常穩定和協調良好的命名空間的明顯例子,這意味着很多東西都可以成功綁定到它。如果您正在開發一個單人項目 - 從圖書館到應用程序的所有工作 - 您更有可能應對更少的命名空間。

另一方面,如果您有多個獨立工作的全局團隊 - 不斷更改/添加標識符 - 那麼最好將代碼分離到命名空間中。此外,如果您有經驗,那麼在另一個系統中使用的顯而易見且理想的標識符已經在另一個系統中使用 - 這也暗示了命名空間。

相關問題