优化大量if的循环分支判断

@Override
public Map<String, String> getAllConfigs() {
    //获取所有的map并封装为map
    List<BlogConfig> blogConfigs = blogConfigMapper.selectList(null);
    Map<String, String> configMap = blogConfigs.stream().collect(Collectors.toMap(BlogConfig::getConfigName, BlogConfig::getConfigValue));
    // TODO: 写的有点烂了,之后改
    for (Map.Entry<String, String> config : configMap.entrySet()) {
        if ("websiteName".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(WEBSITE_NAME);
        }
        if ("websiteDescription".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(WEBSITE_DESCRIPTION);
        }
        if ("websiteLogo".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(WEBSITE_LOGO);
        }
        if ("websiteIcon".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(WEBSITE_ICON);
        }
        if ("yourAvatar".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(YOUR_AVATAR);
        }
        if ("yourEmail".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(YOUR_EMAIL);
        }
        if ("yourName".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(YOUR_NAME);
        }
        if ("footerAbout".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(FOOTER_ABOUT);
        }
        if ("footerICP".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(FOOTER_ICP);
        }
        if ("footerCopyRight".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(FOOTER_COPY_RIGHT);
        }
        if ("footerPoweredBy".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(FOOTER_POWERED_BY);
        }
        if ("footerPoweredByURL".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
            config.setValue(FOOTER_POWERED_BY_URL);
        }
    }
    return configMap;
}

过量if优化:

场景:需要判断当前map中是否有value为null的key,有则赋初始值。

for (Map.Entry<String, String> config : configMap.entrySet()) {
    if (StringUtils.isEmpty(config.getValue())) {
        switch (config.getKey()) {
            case "websiteName" -> config.setValue(WEBSITE_NAME);
            case "websiteDescription" -> config.setValue(WEBSITE_DESCRIPTION);
            case "websiteLogo" -> config.setValue(WEBSITE_LOGO);
            case "websiteIcon" -> config.setValue(WEBSITE_ICON);
            case "yourAvatar" -> config.setValue(YOUR_AVATAR);
            case "yourEmail" -> config.setValue(YOUR_EMAIL);
            case "yourName" -> config.setValue(YOUR_NAME);
            case "footerAbout" -> config.setValue(FOOTER_ABOUT);
            case "footerICP" -> config.setValue(FOOTER_ICP);
            case "footerCopyRight" -> config.setValue(FOOTER_COPY_RIGHT);
            case "footerPoweredBy" -> config.setValue(FOOTER_POWERED_BY);
            case "footerPoweredByURL" -> config.setValue(FOOTER_POWERED_BY_URL);
            default -> throw new RuntimeException("错误的key");
        }
    }
}
posted @ 2020-08-13 09:15  JFkoutian  阅读(132)  评论(0)    收藏  举报