方法返回时尽量不要用null!

1,160 阅读2分钟

这是我参与更文挑战的第4天,活动详情查看: 更文挑战

日常开发中我们总会遇到一些开发问题,比如我们做一些逻辑判断时,对于新手开发可能觉得既然你们这些数据都不匹配,那我也没得返回,那我就返回一个null好了;

你公司的十年老开发劈头盖脸骂起了娘;

今天在看effect java时又看起了这段内容,觉得还是有必要记录一下,首先说下为什么不建议返回null,因为如果你的这个方法是个工具类方法或者是一个接口的话,别人每次都需要先判空然后再判断里面内容,而很多人开发有时是想不起来判断这个的,毕竟日常业务需求都是返回集合的,但是不排除某些特殊情况,你不应该把问题丢给调用者如果你这里可以解决的话;

就像文章上的反问,都没有数据,不返回null却返回一个0长度的对象,还要生成空间,浪费资源开销,其实,这里有一个知识点,我觉得大家可能会忽视掉,我看到的时候也很懵,文章指出对于零长度的数组,每次调用返回的话是有可能返回的是同一个零长度的数组,因为零长度的数组是不可变的,而不可变的对象是可以共享的,这段话可能不好理解,拿一个java的元老也许你一下就明白了,String是final修饰的吧,是不是不可变的,在你每一次修改其实都是重新创建并赋值的,原来的值可能就在内存中等着回收了;就是这么一个道理.

还有一点,大佬们指出,其实建议大家创建小对象的,因为在我们日常开发中会发现有时候创建一个对象可以解决很多麻烦事,简化代码,而且由于现在的jvm很是优秀,小对象的创建和回收是非常廉价的,所有,没事创建对象吧,相信jvm;

虽然有很多工具类提供判空的方法,想必你的代码库里一定也有将null变为空字符串的方法,那为什么不在一开始就控制住呢,养成良好的编码习惯,以后才可以给自己减轻压力;;;