1. 鏈式調用
尤其是在鏈式get某個屬性時,要注意中間節點可能爲空。
String version = "UNKNOWN";
if (computer != null) {
Soundcard soundcard = computer.getSoundcard();
if (soundcard != null) {
USB usb = soundcard.getUSB();
if (usb != null) {
version = usb.getVersion();
}
}
}
java8之後推薦使用Optional實現鏈式調用。
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
2. 原始類型參數
推薦使用void function(Integer a)
,而不是void function(int a)
。
千萬不要爲了節約一點內存而使用後者。後者與前者在語義上並不等價,後者隱式規定了a不能爲null。
如果void function(int a)
的調用方給它傳入的是個Integer,那就要仔細思考參數是否可能爲null,這裏很容易出現空指針異常。