作者後期編輯:選擇的解決方案
(原來的問題依然低於這個框)
摘要:你不應該命名類相同作爲它的命名空間。因此,產品名稱應該用於名稱空間還是主類?產品商標名稱乞求類/命名空間同名
選擇的解決方案:我決定的產品名稱適用於命名空間和一個後綴添加到主類名稱(例如,__Module)。
理由: Visual Studio中默認使用項目名稱的命名空間,程序集的名稱,以及實際交付.exe或.dll - 這是最明顯的項目,所以我覺得是有道理的名字命名空間放在我的產品名稱後面,然後按照Jon Skeet在其答案中的建議進行操作,並將主類命名爲___ Main或__Program或__Module。沒有人想到我的正確答案。
原題:
我COMPLETELY GET它 - 不名一類SAME AS其命名空間!
這幾乎是一個重複的問題...除了我已經花了幾個小時閱讀文章(見下文),並不能找到或認爲似乎是正確的解決方案的。我的產品名稱爲ACME Foobarinator
。它有幾個相關的類型(例如,設置,枚舉),但不足以調用任何類型的名稱空間層次結構。
是有意義的創建一個單一的產品命名空間,拋開一切到它:
namespace Acme.Web.Foobarinator
{
public class Foobarinator { } // BAD! Same name as namespace!
public class FoobarinatorInfo { }
public enum Mode { Disabled, Enabled }
}
BAD!名稱空間和類名都相同!
但是,我也想主類是Foobarinator
因爲它的商標的產品名稱,我想通過消費者的商標名稱使用它:var fb = new Foobarinator();
選項1:消除產品命名空間,將所有類型提升到父命名空間。但是,這會污染父類名稱空間和特定於產品的類型(不一定是所有公共類型)。隨着產品的發展,污染正在增加!
namespace Acme.Web
{
public class Foobarinator { }
public class FoobarinatorInfo { }
public enum FoobarinatorMode { Disabled, Enabled }
// More pollution in future...
}
選項2:添加後綴不用向主類。但是,這混淆了產品商標名稱!
namespace Acme.Web.Foobarinator
{
public class FoobarinatorMain { } // Not the name of the product!
public class FoobarinatorInfo { }
public enum Mode { Disabled, Enabled }
}
選項3:使用子類/類型相關的類型。然而,在一類封裝一切最終違背了關注點分離作爲產品的演進:
namespace Acme.Web
{
public class Foobarinator
{
public class FoobarinatorInfo { }
public enum Mode { Disabled, Enabled }
}
}
您的想法?
我在哪裏妥協?
相關的問題和文章:
How to avoid having the same name for a class and it's namespace, such as Technology.Technology?
Should a class have the same name as the namespace?
Namespace with same name as a class name
同上這一點 - 我會向第二個傾斜。我喜歡將名稱空間視爲一個類別,而類名稱是該類別中特定功能塊的描述。我認爲將主類命名爲「Foobarinator」的願望有點謬誤。調用它像「EntryPoint」是一個更清晰的描述。 – 2012-01-16 21:48:00
實際上它是一個HTTP模塊。 「Acme.Web.Foobarinator.HttpModule」聽起來對嗎?我有很多這樣的東西,很多時候它只是一個單獨的類,它只是尖叫着'Acme.Web.Foobarinator'類。但是,只要添加一個或兩個幫助器類型,就開始苦於需要一個子命名空間。 HENCE,我應該擁有多個單獨的類產品,它們都被稱爲'HttpModule',它們分別位於各自的名稱空間中 - 或者 - 我應該同時在'Acme.Web'和子名稱空間中混合使用單個類? – 2012-01-16 21:50:40
@KevinR:如果沒有「Foobarinator」的具體例子,很難知道......你能否用* Foobarinator這個詞來描述模塊的目的? – 2012-01-16 21:54:21