Java 重复代码删除:嵌套案例

Java 重复代码删除:嵌套案例,java,refactoring,code-duplication,Java,Refactoring,Code Duplication,所以,我正在研究一个结构转换类,它应该将系统中的文件从一种情况移动到另一种情况 现在,我有许多列表,其中包含需要以前缀分隔的xml项(因为每个项的规则略有不同)。新位置的数据来自文件本身 我现在遇到的问题是,我的大部分逻辑保持不变:基本上,我在列表上循环,做一些通用逻辑来确定它必须去的位置,做一些特定的逻辑,然后做通用操作,然后再做特定操作 for(...){ if(GENERIC_LOGIC){ if(SPECIFIC_LOGIC){ doGen

所以,我正在研究一个结构转换类,它应该将系统中的文件从一种情况移动到另一种情况

现在,我有许多
列表
,其中包含需要以前缀分隔的xml项(因为每个项的规则略有不同)。新位置的数据来自文件本身

我现在遇到的问题是,我的大部分逻辑保持不变:基本上,我在列表上循环,做一些通用逻辑来确定它必须去的位置,做一些特定的逻辑,然后做通用操作,然后再做特定操作

for(...){
    if(GENERIC_LOGIC){
        if(SPECIFIC_LOGIC){
            doGenericAction();
            doSpecificAction();
        }
    }
}
当然,实际的代码并没有那么干净。这些位中的每一位都是由大约4行组成的块

现在,我的问题是把一般逻辑从句浓缩成一种可管理的形式。我以前从未重构过封装语句,只是内部语句。有人能给我一些建议,让我用最少的代码污垢干净地完成这项工作吗?谢谢

最干净的解决方案可能是使用一个抽象类来定义通用逻辑,然后创建其他类来定义特定逻辑

当您在文件上迭代时,您将创建相应处理程序类的一个实例,并让它完成其余的工作。

最干净的解决方案可能是使用一个抽象类,它定义通用逻辑,然后创建定义特定逻辑的其他类


当您在文件上进行迭代时,您将创建相应处理程序类的实例,并让它完成其余的工作。

这是一个有趣的想法。不过,我不太喜欢单一方法类。值得深思@WeckarE.:记住,这样,你就可以在不破坏其他行为的情况下对一种行为进行补偿。的确,你可能有很多小班,但这样,你会有一个更灵活的设计(至少在我看来)。这是一个有趣的想法。不过,我不太喜欢单一方法类。值得深思@WeckarE.:记住,这样,你就可以在不破坏其他行为的情况下对一种行为进行补偿。诚然,您可能有许多小类,但这样,您将有一个更灵活的设计(至少在我看来)。感谢重新格式化Berger。我做不好,开会已经迟到了!谢谢你给伯杰重新格式化。我做不好,开会已经迟到了!