我有一个类型实体列表,它通过Entity Framework从DB获取值。如果将null结果集返回为null或空列表,如下所示:
private List<Order> _myOrders;
public List<Order> myOrder
{
get
{
return this._myOrders ?? new List<Order>();
}
set
{
this._myOrders = value;
}
}
任何处理代码都会对表使用count()而不是“!= null”测试?什么被认为是更好的做法。我怀疑应该尝试管理属性中的空值,否则就会在整个地方编写空测试代码。
思想?
感谢。
答案 0 :(得分:7)
我倾向于返回一个空列表。
在概念层面,null表示未知。在您的情况下,与客户相关的订单并不为人所知;相反,没有订单。空列表恰好表示这一点,而null是不精确的,可能是不明确的 - &#34; null&#34;订单意味着没有订单,或仅仅是订单属性尚未填充?
在实际层面,通过返回一个空列表,对订单进行计算的代码可能需要更少的角落检查。例如,使用foreach迭代订单列表的方法应该可以正常使用零长度订单列表(不会发生迭代),而对于没有订单使用null将要求该方法进行安全检查。
答案 1 :(得分:1)
我不同意本;尽管如此,基于广泛接受的理论,他有一个很好的观点。虽然使用null返回涉及的错误处理较少,但我更喜欢它在空列表中,因为对我而言,它似乎浪费了资源。当然,这是一个非常偏好的场景。然后,它真的基于您的应用程序的整体设计。你是否计划用该列表做任何事情而不管它是空的?如果是这样,那么null将不是一种方法。您必须确定简单.count()
检查的容易程度是否超过了您需要编写的额外代码行以检查null以节省资源。至于节省多少资源 - 我不知道。考虑到您需要对空值执行额外检查,您需要将内存交换为周期。
用一粒盐说话。我只编程了一年。