之前在項目開發的時候,一直喜歡在一些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