java规范(三)-----判空----方法内的为空判断
- UID
- 1066743
|
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";
} |
|
|
|
|
|