我试图在SO上找到类似的问题,但没有运气。道歉,如果它是重复的。应该始终初始化Model类的组合属性?
有什么缺点实例类类型的变量在声明时?
在大量的代表业务对象模型类的,我们有这样的事情:
public class RateArea {...}
public class FlatRateSchedule
{
public string ScheduleID {get;set;}
public decimal MaxAmount {get;set;}
}
public class PricingData
{
private List<RateArea> rateAreaList = new List<RateArea>();
private FlatRateSchedule flatRateSchedule = new FlatRateSchedule();
public List<RateArea> RateAreaList
{
get { return rateAreaList; }
set { rateAreaList = value; }
}
public List<FlatRateSchedule> FlatRateScheduleList
{
get { return flatRateScheduleList; }
set { flatRateScheduleList = value; }
}
}
在某些时候,这个PricingData类初始化和某些属性水合(但不总是所有属性)。
的想法是,我们正在创建的类“空白”实例,以便没有属性是有史以来null
。这很方便,因为我们在访问它的成员之前不必检查任何属性是否为空。无论物业是否保水,他们永远不会对消费阶层“空洞”。如果属性没有被初始化,那么代码在访问属性之前需要每次检查null。
是一种全面的约定“一类的所有属性都应该在任何时候都被初始化,不能为空”非常糟糕?
除了使用一些资源来实例化和存储这些“默认”类的实例,在零异常检查代码的储蓄似乎是值得的。我们错过了什么吗?
Lazy类的好主意。 – neontapir 2011-03-17 14:41:44
这减轻了我的顾虑。我们将业务对象发送到Web服务,它们是简单的DTO类型的对象,没有逻辑。对象在数据层中被水化,并且没有办法自我保护。 – Leon 2011-03-21 14:36:15