[英]Use system namespaces for class libraries: good or bad
在我的類庫中使用“系統名稱空間”是一個好主意嗎?
樣品:
namespace System.Web {
public static class RequestExtensions {
public static bool IsPost(this HttpRequest r) {
return string.Compare(r.HttpMethod, "POST", StringComparison.OrdinalIgnoreCase) == 0;
}
}
}
優點:無需包含其他uses-clause(特別是對於擴展方法),因此在添加對庫的引用后,所有子句都可以直接使用。
最好的示例是NUnitEx項目(使用NUnit的命名空間)。
缺點:潛在的名稱沖突。
我不得不說出其他人說的一個不好的想法。 命名空間是一個組織工具,在許多層面上。 它們不僅允許您為自己的目的重復使用標識符而不與其他公司沖突,它們還允許不同的公司將其產品與您或其他任何公司隔離。 將代碼放入System命名空間對於使用您的類型的人來說可能會非常混亂。
此外,人們知道System命名空間中的任何內容都是良好的,可靠的,經過測試的,經過社區審查的,來自Microsoft的完整文檔化代碼。 這是一個非常重要的因素,通過將代碼放在同一個命名空間中,不僅要求你的代碼是好的,而且你必須不辜負它。
設計指南討論命名空間命名 :
命名空間名稱的一般格式如下:
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
例如,Microsoft.WindowsMobile.DirectX。
使用公司名稱作為前綴名稱空間名稱,以防止來自不同公司的名稱空間具有相同的名稱和前綴。
這里沒有重用System
或Microsoft
余地。
非常非常糟糕。 這是令人困惑的,你應該只在你必須這樣做的時候(有些情況下需要)。
只有在100%需要時才這樣做,不要僅僅為了“方便”而這樣做。
我認為這不是一個好主意,因為可能是Microsoft將決定在下一版本的框架中創建RequestExtensions類。使用您的公司名稱啟動命名空間以防止名稱沖突始終是一個好習慣
使用基於系統的命名空間可能會使某人更難以獲取代碼並弄清楚它正在做什么。 例如,如果我拿起新的C#,當我不知道什么時,我經常會使用Google搜索“System.Web.xyz”之類的東西。
在這種情況下,我可能不會知道“System.Web.RequestExtensions”不是System.Web命名空間的真正成員,所以我不得不尋找一個不存在的類。
所以基本上,我的觀點是你需要很好地記錄它或找到另一個命名空間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.