当你有一个复杂的属性时,你应该实例化它还是让用户实例化它?
例如(C#)
一个)
class Xyz{
List<String> Names {get; set;}
}
当我尝试使用时,我必须设置它。
...
Xyz xyz = new Xyz();
xyz.Name = new List<String>();
xyz.Name.Add("foo");
...
哪里好像我修改了代码
B)
class Xyz{
public Xyz(){
Names = new List<String>();
}
List<String> Names {get; }
}
在这种情况下,我可以将列表设置为只读。
可能会出现另一种情况,我想您会故意不想设置它。例如在
C)
class Xyz{
String Name {get; set;}
}
我认为初始化是不好的做法。
对于这种情况是否有一些经验法则?
最佳答案
作为一条经验法则(意味着该规则总会有异常(exception))在构造函数中设置您的成员。这就是构造函数的用途。
请记住 OO 背后的思想之一是抽象。要求“用户”(即想要在其源代码中实例化您的对象的程序员)这样做是 违反抽象原则。这是用户在使用您的对象之前必须考虑的另一件事,因此也是一个潜在的错误来源。
关于c# - 对象的成员是否应该在类中自动设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/250157/