Should I return a null or an empty list?
本问题已经有最佳答案,请猛点这里访问。
我有一个通过实体框架从数据库中获取值的实体类型列表。如果空结果集返回为空或空列表,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 | private List<Order> _myOrders; public List<Order> myOrder { get { return this._myOrders ?? new List<Order>(); } set { this._myOrders = value; } } |
任何处理代码都将对表使用count(),而不是"!=空"测试"?什么是更好的做法?我怀疑应该尝试管理属性中的空值,否则就会到处编写空测试代码。
思想?
谢谢。
我倾向于返回一个空列表。
在概念级别,空表示未知。在您的案例中,与客户相关联的订单并不未知;相反,没有订单。空列表精确地表示这一点,而空列表是不精确的,并且可能是不明确的——"空"订单是指没有订单,还是只是订单属性尚未填充?
在实际级别上,通过返回一个空列表,对订单进行计算的代码可能需要较少的角情况检查。例如,使用foreach迭代订单列表的方法应该可以很好地处理零长度的订单列表(不会发生迭代),而对无订单使用null则需要该方法进行安全检查。
我不同意本的观点;尽管如此,他有一个基于广泛接受的理论的观点。虽然使用空返回的错误处理较少,但我更喜欢它而不是空列表,因为对我来说,它似乎是浪费资源。当然,这是一个非常基于偏好的场景。同样,它是基于应用程序的总体设计的。你打算对那个清单做些什么,不管它是空的吗?如果是这样,那么空值将不是一种方式。您必须决定简单的EDOCX1[0]检查的容易程度是否超过了您需要编写的额外代码行,以检查是否为空以节省资源。至于节约多少资源,我不知道。考虑到您需要对空值执行额外的检查,您需要将内存换成周期。
把我说的话用一点盐吃。我只做了一年的编程。