c# - 如果没有找到/计算数据,方法应该返回 nil 还是空数组?

标签 c# java php c++ objective-c

<分区>

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

该问题主要针对objective-c,但也与其他语言有关。 Objective-c 具有在 nil 上调用方法的良好特性,但所有其他语言并非如此。因此,听到其他开发人员(javac#PHP 开发人员)的争论也很有趣。

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

最佳答案

我相信没有一个答案。

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

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

关于c# - 如果没有找到/计算数据,方法应该返回 nil 还是空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14333569/

相关文章:

c# - 我们在C#中有非托管资源吗?

c# - 获取记录量所需的帮助

c# - 将 Task<TResult> 中的 TResult 转换为 System.Object

java - 为什么 Spring 的 @Transactional 有助于性能

java小程序无法运行

php - Javascript文本区域字数统计未启用提交按钮

php - 在指定位置合并2个mysql表

c# - 两张表用SQL事务插入

java - Play Framework 的 CookieSigner、CSRFTokenSigner 等的自定义实现

php - 在 PHP 中将提取的 Zip 文件重命名为其他语言时出错