1. 程式人生 > >java規範(三)-----判空----方法內的為空判斷

java規範(三)-----判空----方法內的為空判斷

一般我們判空或者有判斷條件時 都是使用

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";
    }