java規範(三)-----判空----方法內的為空判斷
阿新 • • 發佈:2019-02-03
一般我們判空或者有判斷條件時 都是使用
if(條件成立){
執行程式碼
}
這樣的邏輯。
但是如果物件的欄位很深層次時或者條件很多時就容易形成很多個{}的情況,這樣就容易分不出哪個花括號屬於哪部分。如下:
if(條件1成立){
if(條件2成立){
if(條件3成立){
if(條件4成立){
執行程式碼
}
}
}
}
我們可以返過來判斷
if(條件1不成立){
return;
}
if(條件2不成立){
return;
}
if(條件3不成立){
return;
}
if(條件4不成立){
return;
}
執行程式碼;
這樣邏輯層次就清晰些。
實際程式碼優化例子:
優化前
public String updateOrderDateTime() { List<Order> orders = orderReposity.getAllObjects(Order.class); if (orders != null && orders.size() > 0) { for (Order order : orders) { OrderStatus orderStatus = order.getOrderStatus(); if (orderStatus != null) { HistoryStatus current = orderStatus.getCurrent(); if (current != null) { current.setDatetime(current.getDatetime()); } List<HistoryStatus> historyStatuss = orderStatus .getHistory(); for (HistoryStatus historyStatus : historyStatuss) { historyStatus.setDatetime(historyStatus.getDatetime()); } } orderReposity.deleteObject(Order.class, order.getId()); orderReposity.saveObject(order); } } return "ok"; }
優化後能減少花括號的巢狀程度
public String updateOrderDateTime() { List<Order> orders = orderReposity.getAllObjects(Order.class); if (orders == null || orders.size()==0) { return "ok"; } for (Order order : orders) { OrderStatus orderStatus = order.getOrderStatus(); if (orderStatus == null) { continue; } HistoryStatus current = orderStatus.getCurrent(); if (current == null) { continue; } current.setDatetime(current.getDatetime()); List<HistoryStatus> historyStatuss = orderStatus .getHistory(); for (HistoryStatus historyStatus : historyStatuss) { historyStatus.setDatetime(historyStatus.getDatetime()); } orderReposity.deleteObject(Order.class, order.getId()); orderReposity.saveObject(order); } return "ok"; }