首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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";
        }
返回列表