【代码优化】返回0长度数组或者集合
改掉你从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长度数组或者集合相关推荐
- 计算payload长度c语言,C语言0长度数组(可变数组/柔性数组)详解
1 零长度数组概念 众所周知, GNU/GCC 在标准的 C/C++ 基础上做了有实用性的扩展, 零长度数组(Arrays of Length Zero) 就是其中一个知名的扩展. 多数情况下, 其应 ...
- C语言0长度数组(可变数组/柔性数组)详解
CSDN GitHub C语言0长度数组(可变数组/柔性数组)详解 AderXCoding/language/c/zero_length_array 本作品采用知识共享署名-非商业性使用-相同方式共享 ...
- 1---结构体中最后一个成员为[0]长度数组的用法
结构体中最后一个成员为[0]长度数组的用法 2012-04-27 16:03:58 分类: C/C++ 这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势: 1.不需要初始 ...
- Effective Java之返回零长度的数组或者集合,而不是null(四十三)
我们经常可以看到这样的代码: private final List<Cheese> cheesesInStock = ...; /*** @return an array containi ...
- 结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
结构体中最后一个成员为[0]长度数组的用法:这是个广泛使用的常见技巧,常用来构成缓冲区.比起指针,用空数组有这样的优势:(1).不需要初始化,数组名直接就是所在的偏移:(2).不占任何空间,指针需要占 ...
- solidity智能合约[17]-动态长度数组
动态长度数组 动态长度数组可以改变大小和长度 动态长度数组的定义 uint[] grade=[1,2,3,4,5]; 返回动态长度数组 123 function getArray() public v ...
- GNU C的定义长度为0的数组
原文地址:http://blog.csdn.net/ssdsafsdsd/article/details/8234736 在标准C和C++中,长度为0的数组是被禁止使用的.不过在GNU C中,存在一个 ...
- java数组长度为0和数组为null
长度为0的数组,可以求数组长度,为0,即数组内没有元素. int[] zero = new int[0]; //zero引用一个长度为0的数组对象 为null的数组,不能求数组长度,且求解时会出现空指 ...
- C语言长度为0的数组
前面在看Xen的源码时,遇到了一段代码,如下所示: 注意上面最后一行的代码,这里定义了一个长度为的数组,这种用法可以吗?为什么可以使用长度为0 的数组?长度为的数组到底怎么使用?--这篇文章主要针对该 ...
最新文章
- 【mysql学习-2】
- 我的地盘我做主——你必须遵守的Python编码规范
- java异常捕获的一点感悟
- 热冗余冷冗余_冗余支架
- 深度学习笔记(43) Siamese网络
- 【论文笔记】Factorizable Graph Convolutional Networks
- 【函数】fill和fill_n填充之区别
- mysql数据库主从停止_Mysql 主从数据库
- 文件转Base64格式
- badboy使用手册
- 打印机主流的指令类型(ESC命令集+CPCL命令集+TSPL命令集)...
- CSS 如何制作下拉菜单
- 诺基亚Lumia920竞争力分析软件篇—三星ATIV S、GALAXY S3、HTC One X、iPhone 5对比
- linux generic netlink实现机制:注册、创建
- 微博官方API使用方法【全流程教学】
- Golang#Typora-Golang笔记
- vulnhub——Bulldog1
- Kafka | Kafka的消费再均衡是指什么?
- 机器学习【逻辑回归】——logistic函数逻辑回归鸢尾花分类
- 使用邮件,有哪些邮箱格式模板需要注意的么?