改掉你从C语言继承过来的习惯,我们在java中没理由返回类型为数组或者集合返回null。

private final List<Cheese> InStock =...;public Cheese[] getCheeses() {if( InStock.size() ==0){return null;}}

这种是我们经常使用的 返回的模式,这就带来在应用Cheese数组的时候 都需要判断数组是否为null。

Cheese[]  cheeses= shop.getCheeses();if(cheeses! =null){....}

如果我们修改下,把数组为空或集合没有数据时候,返回一个0长度,这样就不会要在使用的时候判断

数组和集合是否为空了。

有人认为;null返回值比0长度数组更好,因为它避免了分配数组需要的开销。

这个观点是站不住脚的,原因有两点。第一,在这个级别上的担心性能问题是不可取的,因为这个级别的性能消耗

是微不足道的; 第二,对于不返回任何元素对象有可能被自由的共享。

总之,返回类型为数组或者集合的方法 没理由返回null,我们使用返回0长度的数组或集合。

【代码优化】返回0长度数组或者集合相关推荐

  1. 计算payload长度c语言,C语言0长度数组(可变数组/柔性数组)详解

    1 零长度数组概念 众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展. 多数情况下, 其应 ...

  2. C语言0长度数组(可变数组/柔性数组)详解

    CSDN GitHub C语言0长度数组(可变数组/柔性数组)详解 AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 ...

  3. 1---结构体中最后一个成员为[0]长度数组的用法

     结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58 分类: C/C++ 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:  1.不需要初始 ...

  4. Effective Java之返回零长度的数组或者集合,而不是null(四十三)

    我们经常可以看到这样的代码: private final List<Cheese> cheesesInStock = ...; /*** @return an array containi ...

  5. 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  6. C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法

    结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...

  7. solidity智能合约[17]-动态长度数组

    动态长度数组 动态长度数组可以改变大小和长度 动态长度数组的定义 uint[] grade=[1,2,3,4,5]; 返回动态长度数组 123 function getArray() public v ...

  8. GNU C的定义长度为0的数组

    原文地址:http://blog.csdn.net/ssdsafsdsd/article/details/8234736 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个 ...

  9. java数组长度为0和数组为null

    长度为0的数组,可以求数组长度,为0,即数组内没有元素. int[] zero = new int[0]; //zero引用一个长度为0的数组对象 为null的数组,不能求数组长度,且求解时会出现空指 ...

  10. C语言长度为0的数组

    前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?--这篇文章主要针对该 ...

最新文章

  1. 【mysql学习-2】
  2. 我的地盘我做主——你必须遵守的Python编码规范
  3. java异常捕获的一点感悟
  4. 热冗余冷冗余_冗余支架
  5. 深度学习笔记(43) Siamese网络
  6. 【论文笔记】Factorizable Graph Convolutional Networks
  7. 【函数】fill和fill_n填充之区别
  8. mysql数据库主从停止_Mysql 主从数据库
  9. 文件转Base64格式
  10. badboy使用手册
  11. 打印机主流的指令类型(ESC命令集+CPCL命令集+TSPL命令集)...
  12. CSS 如何制作下拉菜单
  13. 诺基亚Lumia920竞争力分析软件篇—三星ATIV S、GALAXY S3、HTC One X、iPhone 5对比
  14. linux generic netlink实现机制:注册、创建
  15. 微博官方API使用方法【全流程教学】
  16. Golang#Typora-Golang笔记
  17. vulnhub——Bulldog1
  18. Kafka | Kafka的消费再均衡是指什么?
  19. 机器学习【逻辑回归】——logistic函数逻辑回归鸢尾花分类
  20. 使用邮件,有哪些邮箱格式模板需要注意的么?

热门文章

  1. 使用Uchihash处理恶意软件中的嵌入式哈希
  2. 使用bs4+re正则来爬取网页上需要的数据
  3. 创建线程的3种方式,线程池的参数详解
  4. 计算机系统操作工 初级,计算机系统操作工国家职业标准
  5. CentOS下常用配置文件和命令以及目录结构备注
  6. SpringBoot2.0高级案例(02) :整合 RocketMQ ,实现请求异步处理
  7. ASP.NET MVC 4 tutorial
  8. RocketMQ(十六)RocketMQ消息存储机制
  9. JVM监控及诊断工具命令行篇之jhat
  10. JVM监控及诊断工具命令行篇之jinfo