2009-05-28 227 views
43

對於那些編寫可重用組件的人,如果您要擴展.NET框架的功能,您認爲哪些是最佳實踐?命名空間命名約定

例如,我正在創建一個Pop3庫,因爲在.NET中不存在這個庫。我是否創建自定義名稱空間或使用System.Net.Mail

回答

57

Namespace Naming Guidelines

一般的規則命名的命名空間 是使用公司名稱,後跟 技術名稱和可選的 功能和設計如下。複製 代碼

CompanyName.TechnologyName[.Feature][.Design]

一般來說這是一個非常不好的做法,開始包括東西放進框架或庫的默認命名空間。這可能會導致混淆,因爲新名稱空間是作爲分發給所有人的框架的一部分的現有庫的一部分,還是屬於其他人添加的自定義框架的一部分。

此外,命名約定通過使用唯一標識符(例如CompanyName)來嘗試避免命名空間衝突。它還減少了新圖書館來源方面的混亂和問題。

這不僅是微軟的東西,而且也是Java的。在Java中的命名空間,所謂的「套餐」有following convention

一個獨特的包名的前綴 總是寫在全部小寫的ASCII 字母應該是 頂級域名之一,目前玉米, EDU,GOV,密耳,網,組織,或如在ISO標準3166 指定識別 國家 英語雙字母代碼之一,1981年

包 名稱的後續部分根據變化一個 組織自己的內部命名 公約。這樣的約定可能會在 中指定某個目錄名稱爲 的組件是部門,部門, 項目,機器或登錄名。

所以,如果我有一個超級棒的軟件,它可能在net.coobird.superawesomesoftware包。

而使用包含默認java.,javax.,com.sun.包的軟件包名稱是一個很大的禁忌。

+1

@Sir Psycho:Coobird是對的,但你也需要保持開放的心態,你不想要一個名字空間,結果太深了。我在輸入3'後開始擔心。'在命名空間名稱中。 – Perpetualcoder 2009-05-28 02:47:23

+0

@Sir Psycho:命名空間指南還指出,一個行之有效的品牌是另一種選擇,而不是公司名稱 - 這些是避免命名空間衝突的準則。所以,也許某些標題(如你的用戶名?)是獨一無二的,可能是CompanyName的一個很好的替代品:) – coobird 2009-05-28 03:21:00

15

也看看下面的MSDN文章準則有關命名的命名空間

Names of Namespaces

選擇了一個命名空間應標明功能進行名稱 可通過在命名空間類型。例如,System.Net的 。套接字名稱空間包含的類型使開發人員能夠使用套接字通過網絡進行通信。

一個命名空間名稱的一般格式爲:

<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]

例如,Microsoft.WindowsMobile.DirectX