重构现有代码: - 将一部分代码放在方法中并使用该方法

时间:2013-10-29 09:35:00

标签: java

现有的 fillModel 方法如下

@Override
        protected void fillModel(final Model model,
                final List<FacebookChannelConfig> items) {
            final Map<FacebookChannelConfig, Boolean> defaultConfigMap = Maps
                    .newHashMapWithExpectedSize(items.size());
            for (FacebookChannelConfig channelConfig : items) {
                if (configRepository.getDefault() != null
                        && configRepository.getDefault().getId().toString()
                                .equals(channelConfig.getId().toString())) {
                    defaultConfigMap.put(channelConfig, Boolean.TRUE);
                } else {
                    defaultConfigMap.put(channelConfig, Boolean.FALSE);
                }
                if (channelConfig.getOwner().getId().getId() != userContext
                        .getOrganization().getId().getId()) {
                    channelConfig.setName(channelConfig.getName() + "("
                            + channelConfig.getOwner().getName() + ")");
                }
            }
            model.addAttribute("isDefault", defaultConfigMap);
        }

我已将上述 fillModel中的以下代码添加到* idDefault * 方法中。

if (configRepository.getDefault() != null
                    && configRepository.getDefault().getId().toString()
                            .equals(channelConfig.getId().toString())) {
                defaultConfigMap.put(channelConfig, Boolean.TRUE);
            } else {
                defaultConfigMap.put(channelConfig, Boolean.FALSE);
            }

我有 isDefault 方法,它返回如下布尔值

private boolean isDefault(final List<FacebookChannelConfig> config) {
        if (configRepository.getDefault() != null
                && configRepository.getDefault().getId().toString()
                        .equals(config.get(0).toString())) {
            return true;
        }
        return false;
    }

上面的方法 isDefault 正在 fillModel方法中使用,如下所示

   protected void fillModel(final Model model,
                final List<FacebookChannelConfig> items) {
            final Map<FacebookChannelConfig, Boolean> defaultConfigMap = Maps
                    .newHashMapWithExpectedSize(items.size());
            for (FacebookChannelConfig channelConfig : items) {
              defaultConfigMap.put(channelConfig, isDefault(items));
             if (channelConfig.getOwner().getId().getId() != userContext.getOrganization().getId().getId()) {
                    channelConfig.setName(
                            channelConfig.getName() + "("
                                    + channelConfig.getOwner().getName()
                                    + ")");
                }
            }
            model.addAttribute("isDefault", defaultConfigMap);
        }

defaultConfigMap.put(channelConfig,isDefault(items)); 的上述用法不正确。 请求建议

1 个答案:

答案 0 :(得分:1)

您可以在需要元素的位置使用List: 也许这可行:

    private boolean isDefault(final FacebookChannelConfig channelConfig) {
        if (configRepository.getDefault() != null
                    && configRepository.getDefault().getId().toString()
                            .equals(channelConfig.getId().toString())) {
            return true;
        }
        return false;
    }

并使用:

defaultConfigMap.put(channelConfig, isDefault(channelConfig));