优化大量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");
}
}
}

浙公网安备 33010602011771号