之前在项目开发的时候,一直喜欢在一些public方法中来判断一些条件,如果不满足就return null
比如
public String getSubString(String data, int start, int end){
if(TextUtil.isEmpty(data)){
return null;
}
return data.subString(start, end);
}
或者
private final List data =…;
.
.
.
public String getDataItem(int i){
if(data == null){
return null;
}
return data.get(i);
}
一直对于这种写法深信不宜,认为即安全又高效。
但是今天看了中的第43条
发现这样写是非常愚蠢的。因为对于这种写法的API的调用者,无时不刻需要对你返回的东西进行非常判断。
而且我一直认为return null开销比较小,不用对内存进行重新分配(这也是看了深入理解java虚拟机之后没有完全理解造成的弊端,总想要尽量避免GC)。
其实这些担心都是多余的,这种方法对内存的影响几乎是没有的。
所以正确的写法应该是
public String sgetDataItem(int i){
if(data == null){
return “”;
}
return data.get(i);
}
返回一个空String