阅读 98

物联网基础入门,实战可落地的 AIoT 项目

### download:物联网基础入门,实战可落地的 AIoT 项目

实战技巧:if-else代码优化技巧

在实践的业务开发当中,经常会遇到复杂的业务逻辑,可能局部同窗完成出来的代码并没有什么问题,但是代码的可读性很差。本篇文章主要总结一下本人在实践开发中如何防止大面积的 if-else 代码块的问题。补充阐明一点,不是说 if-else 不好,而是多层嵌套的 if-else 招致代码可读性差、维护本钱高等问题。

  现有如下一段示例代码,局部优化技巧是依据这段代码停止的

public class BadCodeDemo {

    private void getBadCodeBiz(Integer city, List newDataList, List oldDataList) {

        if (city != null) {

            if (newDataList != null && newDataList.size() > 0) {

                TestCodeData newData = newDataList.stream().filter(p -> {

                    if (p.getIsHoliday() == 1) {

                        return true;

                    }

                    return false;

                }).findFirst().orElse(null);

                if (newData != null) {

                    newData.setCity(city);

                }

            }

        } else {

            if (oldDataList != null && newDataList != null) {

                List oldCollect = oldDataList.stream().filter(p -> {

                    if (p.getIsHoliday() == 1) {

                        return true;

                    }

                    return false;

                }).collect(Collectors.toList());

                List newCollect = newDataList.stream().filter(p -> {

                    if (p.getIsHoliday() == 1) {

                        return true;

                    }

                    return false;

                }).collect(Collectors.toList());

                if (newCollect != null && newCollect.size() > 0 && oldCollect != null && oldCollect.size() > 0) {

                    for (TestCodeData newPO : newCollect) {

                        if (newPO.getStartTime() == 0 && newPO.getEndTime() == 12) {

                            TestCodeData po = oldCollect.stream().filter(p -> p.getStartTime() == 0

                                    && (p.getEndTime() == 12 || p.getEndTime() == 24)).findFirst().orElse(null);

                            if (po != null) {

                                newPO.setCity(po.getCity());

                            }

                        } else if (newPO.getStartTime() == 12 && newPO.getEndTime() == 24) {

                            TestCodeData po = oldCollect.stream().filter(

                                    p -> (p.getStartTime() == 12 || p.getStartTime() == 0)

                                            && p.getEndTime() == 24).findFirst().orElse(null);

                            if (po != null) {

                                newPO.setCity(po.getCity());

                            }

                        } else if (newPO.getStartTime() == 0 && newPO.getEndTime() == 24) {

                            TestCodeData po = oldCollect.stream().filter(

                                    p -> p.getStartTime() == 0 && p.getEndTime() == 24).findFirst().orElse(null);

                            if (po == null) {

                                po = oldCollect.stream().filter(

                                        p -> p.getStartTime() == 0 && p.getEndTime() == 12).findFirst().orElse(null);

                            }

                            if (po == null) {

                                po = oldCollect.stream().filter(

                                        p -> p.getStartTime() == 12 && p.getEndTime() == 24).findFirst().orElse(null);

                            }

                            if (po != null) {

                                newPO.setCity(po.getCity());

                            }

                        } else if (newPO.getTimeUnit().equals(Integer.valueOf(1))) {

                            TestCodeData po = oldCollect.stream().filter(

                                    e -> e.getTimeUnit().equals(Integer.valueOf(1))).findFirst().orElse(null);

                            if (po != null) {

                                newPO.setCity(po.getCity());

                            }

                        }

                    }

                }

            }

        }

    }

}



文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐