如果我有一個相互關聯的類中的常量,可以說用於爲MyClass編寫/讀取Xml文件的字符串,是否應該將它們包裝在MyClass中的嵌套類Xml中?或者只是定義它們而不包裹在MyClass中?如果包裝它們比如果只有部分這些常量應該可以被外部世界訪問是一個好主意,例如只有Xml.Name,其餘的是MyClass將用於重新創建對象的Xml屬性,那麼我應該如何設置我的嵌套類的保護級別爲?類特定常量是否應該包裝在嵌套類中?
2
A
回答
0
我看到一個nested-class
作爲一個對象,只有在另一個對象的上下文中才有意義;並且其邏輯需要該另一個對象的屬性。鑑於此,我從未設計過我以後不會重構的nested-class
。而且我認爲需要一個public nested-class
作爲一個陷入困境的設計的紅旗。
無論如何,你的問題讓我考慮它們是否可能有用。所以即使我不會使用這種設計,它可能適用於你。
我確實想提到const
應該只用於永不改變的事情。就像一天中的幾小時或光速。我不能完全從你的問題中得知,但類似Xml.Name
似乎是可變的。我建議對這些屬性使用readonly
。可能的話,static readonly
如果它們在所有實例中都一致。這將導致你清除many pitfalls of const
。
以下是class
我嘲笑了證明什麼,我會建議爲你的設計:
public class MyClass
{
public string Title { get; set; }
Xml _xml;
public Xml MyXml
{
get { return _xml; }
set { _xml = value; }
}
public MyClass(string xmlName, object xmlAttributes)
{
_xml = new Xml(xmlName, xmlAttributes);
}
public class Xml
{
private readonly string _name;
public string Name
{
get { return _name; }
}
private readonly object _attributes;
internal object Attributes
{
get { return _attributes; }
}
public Xml(string name, object attributes)
{
_name = name;
_attributes = attributes;
}
}
}
0
我看不需要將常量移動到嵌套類。
無障礙:只有MyClass的 *私人*需要
讓常量。
僅使用與MyClass * internal *在相同程序集中的類所需的常量。
僅使用子常量MyClass和MyClass本身保護。
請常數僅由在相同組件MyClass的類或通過MyClass的亞類和由MyClass的本身內部保護需要。
Make常量也需要其他程序集中的類MyClass的一個public。
命名:
如果你在一個類中使用前綴好很多常量類別他們。所以讀者可以更快地找到正確的。
相關問題
- 1. 朋友是否應該在嵌套類中傳遞?
- 2. Ruby常量和嵌套類
- 3. 服務類是否應該超過存儲庫類的包裝?
- 4. 反思 - 嵌套在包裝局部類
- 5. 「公共」嵌套類是否
- 6. 異常類應該如何特定?
- 7. 在TypeScript中異常嵌套/包裝
- 8. 應該在模塊級別聲明類特定的「常量」嗎?
- 9. 檢查類是否有嵌套類?
- 10. 包括嵌套類
- 11. 在類中嵌套自定義異常類? (蟒蛇)
- 12. 刪除嵌套類型中的所有包裝類型
- 13. 檢測嵌套類型的常量
- 14. 類X的配置類應該嵌套在X中還是嵌套在X之外?
- 15. 在使用TypeScript時,Node.js/Express路由器是否應該包裝在類中?
- 16. C++中是否存在類似Java的靜態嵌套類?
- 17. 模板類的嵌套類定義是否屬於ipp文件?
- 18. 我應該避免泛型類型中的嵌套類型嗎?
- 19. 異常而decalaring在C#中嵌套類
- 20. C++:朋友特定對象(嵌套類)
- 21. 我是否應該在父/基類中存儲常見功能
- 22. 如何創建一個嵌套在Static類中的類的實例,該類又嵌套在Non-Static類中?
- 23. 檢查隱式類型變量是否包含特定值
- 24. 如何檢查嵌套列表是否包含特定值C#
- 25. 通用基類包裝嵌套泛型類以減少類型參數說明:此模式是否有名稱?
- 26. 在嵌套類
- 27. 的DataTemplate綁定到嵌套類變量
- 28. 在Java否定嵌套類如何正則表達式否定
- 29. 在python中製作嵌套類是否是一個好習慣?
- 30. C# - 定義公共嵌套類:我們應該這樣做嗎?
我沒有對是否應該使用嵌套類或沒有意見,但如果你那麼我應該認爲嵌套類將是公共的,外部可見成員是公共內部成員和內部可見成員。 – allonym 2012-02-28 00:56:45
請注意,可公開訪問的常量可能會導致一些奇怪的情況。使用你的程序集的程序集可以自由地將常量嵌入到它們自己的二進制文件中。結果是,即使您更改了它可能不會反映在使用您的代碼的程序集中的值(並且該代碼使用了新構建版本)。因此,當你希望公開你的常量時,靜態只讀是個好主意(當然,內部不會導致這個問題) – 2012-02-28 14:57:57