我应该返回null还是空列表
本文关键字:列表 返回 null 我应该 | 更新日期: 2023-09-27 17:49:58
我有一个类型实体列表,通过实体框架从DB获得值。如果空结果集作为空值或空列表返回,如下所示:
private List<Order> _myOrders;
public List<Order> myOrder
{
get
{
return this._myOrders ?? new List<Order>();
}
set
{
this._myOrders = value;
}
}
任何处理代码都会对表使用count()而不是"! "= null"测试?什么被认为是更好的实践。我怀疑应该尝试在属性中管理null,否则就会到处写null测试代码。
想法吗?
谢谢。
我倾向于返回一个空列表。
在概念层面上,null表示未知。在您的案例中,与客户相关的订单不是未知的;相反,没有命令。空列表精确地表示这一点,而null是不精确的,可能是模棱两可的——"null"订单意味着没有订单,还是仅仅意味着订单属性还没有被填充?
在实际层面上,通过返回一个空列表,对顺序进行计算的代码可能需要较少的边角情况检查。例如,使用foreach迭代订单列表的方法应该可以很好地处理长度为零的订单列表(不会发生迭代),而对于没有订单使用null则需要该方法进行安全检查。
我不同意Ben的观点;尽管如此,他的观点还是基于被广泛接受的理论。虽然使用null返回所涉及的错误处理较少,但我更喜欢它而不是空列表,因为对我来说,它似乎是对资源的浪费。当然,这是一个基于偏好的场景。不过,它实际上是基于应用程序的总体设计的。不管清单是空的,你打算用它做点什么吗?如果是这样,那么null就不是一种选择。您必须决定简单的.count()
检查的便利性是否超过为检查null而节省资源所需编写的额外代码行。至于能节省多少资源,我不知道。考虑到您需要对null执行额外的检查,您正在为周期交换内存。
对我说的话半信半疑。我才编程一年。