0

这是一个普遍的问题,有趣的是你们使用什么方法,有什么优点和缺点?有时方法会返回列表(例如,NSMutableArrayNSArray在 obj-c 中),而我目前的方法是如果没有可返回的内容则返回 nil。如果它只是某个本机或自定义类的对象,则返回 nil 是有意义的,但是如果没有找到,我们是否应该返回分配/初始化的空数组?

该问题主要针对objective-c但也与其他语言有关。Objective-c有很好的功能来调用方法nil,但是这不是所有其他语言的情况。因此,听到其他开发者(和开发者)的论点也javac#有趣PHP

更新奇怪的是为什么有些人投票结束这个问题。与设计模式相关的问题也可以描述为个人意见问题,但是架构和代码质量问题比语法问题更重要。

4

4 回答 4

2

我相信没有一个答案。

对于我自己,我决定尽可能返回预期类型的​​结果,否则返回 NULL。

比如说,在我自制的 DAL 中,该getAll方法返回一个空数组(列表)-因此可以将其传递给 PHP 的foreach运算符而不会引发错误。
另一方面,getRow应该返回关联数组的方法在找不到数据的情况下返回 NULL,因为空数组同样无用。

于 2013-01-15T08:26:39.210 回答
1

在我看来,返回 null 和空容器有两种不同的含义。空容器表示no result matched your query but it was successful,而空结果表示something went wrong

在第一种情况下,如果您在某处编写了代码要说:

  print "You have found" + GetResults.Size() + " results" 

您将能够打印与查询匹配的零个结果。如果您决定使用null,则必须添加显式检查。

在将结果序列化为 JSON 作为对 Web 服务器请求的响应时,我也遇到了一些麻烦,后来我后悔选择返回 null 而不是空数组。

于 2013-01-15T08:25:42.517 回答
0

返回 nil 或任何显然不是事物的东西。不要做超过需要做的工作。

返回一个空数组可能会导致分配许多无用的指针和结构,而您真正需要的只是说“我没有给你”。

于 2013-01-15T08:28:09.747 回答
0

在可可中,

如果您将 a 返回nil到某个数组,您需要事后检查,您没有尝试访问数组索引。

并且最好返回nil而不是没有任何对象的数组。

于 2013-01-15T08:28:27.183 回答