如果我有一个相互关联的类中的常量,可以说用于为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. Ruby常量和嵌套类
- 2. 服务类是否应该超过存储库类的包装?
- 3. 反思 - 嵌套在包装局部类
- 4. 异常类应该如何特定?
- 5. 在TypeScript中异常嵌套/包装
- 6. 应该在模块级别声明类特定的“常量”吗?
- 7. “公共”嵌套类是否
- 8. 检查类是否有嵌套类?
- 9. 包括嵌套类
- 10. 在类中嵌套自定义异常类? (蟒蛇)
- 11. 检测嵌套类型的常量
- 12. 删除嵌套类型中的所有包装类型
- 13. 在使用TypeScript时,Node.js/Express路由器是否应该包装在类中?
- 14. C++中是否存在类似Java的静态嵌套类?
- 15. 异常而decalaring在C#中嵌套类
- 16. 如何创建一个嵌套在Static类中的类的实例,该类又嵌套在Non-Static类中?
- 17. 嵌套类模板特
- 18. C# - 定义公共嵌套类:我们应该这样做吗?
- 19. CA1034:嵌套类型不应该是可见的
- 20. 我应该使用嵌套类还是IoC容器?
- 21. Ruby:类中的嵌套类与嵌套类中的嵌套相同?
- 22. 嵌套类变量调用
- 23. 在python类中定义常量是否真的需要?
- 24. 在嵌套对象中查找特定类型的属性
- 25. 不能使用父类中嵌套类 - 即使嵌套类的定义之后
- 26. 嵌套在特质中的类:价值是什么?
- 27. 我应该在类中包含另一个对象还是另一个类的子类?是或是否?
- 28. 是否可以显式访问包含类的嵌套类的实例成员?
- 29. 嵌套类:从嵌套保护的类
- 30. 嵌套类或不嵌套类?
我没有对是否应该使用嵌套类或没有意见,但如果你那么我应该认为嵌套类将是公共的,外部可见成员是公共内部成员和内部可见成员。 – allonym 2012-02-28 00:56:45
请注意,可公开访问的常量可能会导致一些奇怪的情况。使用你的程序集的程序集可以自由地将常量嵌入到它们自己的二进制文件中。结果是,即使您更改了它可能不会反映在使用您的代码的程序集中的值(并且该代码使用了新构建版本)。因此,当你希望公开你的常量时,静态只读是个好主意(当然,内部不会导致这个问题) – 2012-02-28 14:57:57