對業務層中單獨的類來存儲枚舉定義的普遍共識是什麼?這是不好的做法嗎?這是否符合良好的n層設計?目前,我的枚舉定義與其他類似,我認爲是相關的類,但我覺得它們應該放在一個地方。這實際上是一個主觀問題,並且與我如何構建解決方案的其餘部分有關?單獨的枚舉類?
單獨的枚舉類?
回答
在單獨的類
保持枚舉在這種情況下你折騰無關定義爲一類,幾乎沒有好處。
定義枚舉嵌套式類涉及到
當你在一個類中持有枚舉,你可能會碰到命名的煩惱:
class Foo
{
public enum SomeType { /* ... */ }
public SomeType SomeType { get; set; }
}
即SOMETYPE是這會給出一個錯誤已經定義。
它可能只是歸結到個人的口味,但多數情況下我把我的枚舉與它們相關的類一起,沒有嵌套他們:
public enum SomeType { }
public class Foo { }
我很想多次讓他們嵌套(我們談論的當然是公共枚舉),但命名問題是不值得的,例如:
class Foo
{
public enum Enumeration { }
}
那麼我可以用這樣的枚舉Foo
類之外,爲:Foo.Enumeration
,但下面的聲明(在相同的命名空間中):
enum FooEnumeration { }
class Foo { }
給出類似的結果,因爲您只需不必鍵入'。'。當你引用枚舉:FooEnumeration
。此外,後者允許你這樣做:
class Foo
{
public FooEnumeration Enumeration { get; set; }
}
這將導致前面提到的命名衝突。
摘要
當使用具有強大的功能轉到IDE,它在我看來,命名問題比枚舉定義的「物理」的定位更爲重要。
我真的不明白你爲什麼要在類中放置一個枚舉 - 也許你的意思是文件?
我個人有的單獨文件,每個枚舉與枚舉的名稱。
我把這個文件放在enum被使用的地方,並相應的命名空間。
如果要在程序集/名稱空間之間共享枚舉,我將使用最小的共享名稱空間,因此它對於使用的名稱空間是可見的。
讓枚舉接近它們的使用位置將使代碼分離成稍微容易一些的項目(如果需要的話)。
我沒有看到將它們全部放在一個文件中的重點 - 導航方面,Visual Studio具有足夠多的導航功能,而這並不是必需的。
同意,儘管我已經看到很多在一個類中使用枚舉的生產代碼。 – KingCronus
@KingCronus - 如果枚舉僅在類中使用並且對它是私有的,那麼這可能是我對規則的例外。 – Oded
我更喜歡在我的項目中爲所有常量和枚舉分開類,它提高了代碼的可讀性。您應該這樣做,特別是如果您在業務層和其他層中引用Comman proj時。但是如果爲了Constant/Enum類而添加不必要的引用,那麼在同一個項目中使用它們會更有意義。
public class Enumerations
{
public enum Gender{
Male = 0,
Female = 1,
Unknown = 2
}
}
當你消耗的,你可以不喜歡它
GetPerson(Enumeration.Gender gender)
{
}
'Enumeration.Gender'比'Gender'更具可讀性嗎?好吧,我想美麗真的*是在旁觀者的眼中。 –
看着Enumeration.Gender你知道它是一個枚舉。 只是「性別」可能會讓你把它看作是一個階級/結構。 –
那麼你應該把所有的類放在一個名爲'@ class'的(外部)類中,並將所有的結構放在'@ structure'中,這樣你就可以立即知道它們是哪一種類型的。不,只是在開玩笑,你當然可以按你認爲合適的方式做,但我覺得它有點尷尬。 –
- 1. 在單獨的枚舉類型中重用枚舉值
- 2. 在單獨的類中枚舉
- 3. Java類枚舉枚舉類
- 4. 類枚舉類
- 5. Ç枚舉(枚舉類型定義)的
- 6. Node.js native枚舉中的枚舉類型
- 7. 枚舉類
- 8. 類型枚舉
- 9. 枚舉C++類
- 10. 類內枚舉
- 11. 從枚舉類
- 12. AutoMapping枚舉類
- 13. 枚舉或類?
- 14. Symfony枚舉類型與表單類型
- 15. 自動映射器枚舉枚舉類
- 16. 枚舉vs強類型枚舉
- 17. 枚舉拋出「不是枚舉類型」
- 18. 基於枚舉創建枚舉類別
- 19. 確定枚舉類中的枚舉數(或任何枚舉類中的特定枚舉值)
- 20. 單個C#類的多個枚舉器
- 21. 帶枚舉類型的單表繼承
- 22. 類名單中的公共枚舉
- 23. 如何在Java中使用單獨的枚舉類引用靜態類?
- 24. 類C++中的枚舉聲明,在類中枚舉的問題
- 25. 枚舉與實體框架 - 枚舉值獨立於錶行ID
- 26. Python 2.7 Backport:枚舉類不是抽象類枚舉的實例
- 27. 「枚舉」類,得到
- 28. 上枚舉類型
- 29. 枚舉類調用
- 30. 檢查枚舉類
你是否複製不同層的枚舉定義/名稱? – Oded