2011-09-05 54 views
6

這是OK:可以在樹中的兩個點上存在名稱空間名稱嗎?

namespace Simple.OData 
{ 
    // Common OData functionality 
} 

namespace Simple.Data.OData 
{ 
    // The Simple.Data adapter for OData 
} 

感覺像它可能是錯的,但我不知道。

+0

[這個其他職位(http://stackoverflow.com/questions/918894/namespace-naming-conventions/918913#918913)給你與namaspaces命名準則的鏈接。 – JPBlanc

回答

7

這當然是有效的 - 考慮System.Xml.LinqSystem.Linq。我不能馬上預見到任何問題......但這並不是說它是必然一個好主意。

個人而言,我更喜歡在Simple.Data.ODataSimple.OData.Data,因爲我懷疑這主要是針對誰正在使用Simple.Data人,但碰巧使用OData的 - 沒有人誰是OData集中。再次,這就像LINQ:System.Xml.Linq是一個XML API,它將與LINQ一起播放;它不是LINQ「提供者」。

基本上它與「我有一個轉換器從A型轉換爲B型;我把它放在A型還是B型附近? - 但帶有命名空間。我的經驗是,通常更多的頭部劃痕考慮最好的事情要比任何一種方法造成的問題都要多。

+0

想知道爲什麼最初不被認爲是「System.Linq.Xml」而不是「System.Xml.Linq」 ,對我來說它看起來更清晰 – sll

+0

它可能存在於'System.Xml'程序集中,而不是'System.Linq'中? –

+0

@sllev:我只是添加了一個評論,從根本上說它是一個XML API。您在使用XML數據時使用它 - 它恰好適用於LINQ。 –

5

更正確的是,namespace Simple.OData.Data

這是因爲Data命名空間應該與OData相關的其他類分組。

如果你在考慮System.Data,System.Data.SqlClient這幾行,那麼這很重要,因爲它們是System.Data.dll程序集的一部分,並且是它的一個集成部分。我自己實現的IDbCommand等類生存在MyNamespace.SubNamespace.AdoWrapper命名空間,如果這給你一些上下文。

在你的情況,Simple.Data可能不存在或有它不多,不像System.Data ..

+0

+1,但會聽起來更酷,因爲「更正確的命名空間Simple.OData.Data將是年輕的Padawan」:p – Kheldar

0

是的,它是,但也有一些缺點。

命名空間是類型名稱的一部分。 也就是說,命名空間A.B內名爲C的類型實際上被命名爲A.B.C

當您使用using聲明時,那麼您只是使用一種快捷方式

缺點:

我注意到,使用的命名空間,如System時有時Visual Studio中可能會變得有點混亂,specialy,以及其他存在在.NET Framework ......以這樣的方式,你必須輸入該類型的全名。

0

這可能會讓一些人感到困惑,但它不應該引起任何問題。 你可能需要到雖然preprend命名空間,如果你輸入:

using Simple.Odata; 
using Simple.Data.Odata; 

否則編譯將無法識別它。 對於你想要創建的東西,可能有更好的結構,但要回答你的問題:是的,如果你願意,也可以。

1

當然,如果它的語義是正確的。例如,看看有多少框架命名空間以.Design結尾!

0

最後一部分應該依賴於命名空間的以前的部分。您的適配器對Simple.OData有依賴性,但對Simple.Data也有依賴性。但由於Simple.OData較少通用的我喜歡的東西,如:

using Simple.Data  

namespace Simple.OData.Adapters 
{ 
    // The Simple.Data adapter for OData 
} 
相關問題