As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。




9年前关闭。




我在其他人的Java代码中发现了一些常见的代码模式,这些模式可以从一些简单的重构中受益。

您对宠物代码模式的仇恨是什么及其修复(以及不明显的原因)?

我已经有了回答自己的一些宠物恨的自由。

最佳答案

我最喜欢的重构之一是使用策略模式,而不是冗长的if-else/switch语句。
例如。

String chooser = ""//some sting

if(testCond1(chooser)){
doSomething1();
} else if(testCond2(chooser)){
doSomethingElse2();
} else if(testCond2(chooser)){
doSomethingElse3();
} else if(testCond4(chooser)){
doSomethingElse4();
} else if(testCond5(chooser)){
doSomethingElse5();
} else if(testCond6(chooser)){
doSomethingElse6();
}

可以更改为:
    Map<String, Handler> handlers = new HashMap<String, Handler>();

handlers.get(chooser).handle();

然后定义一个Handler接口(interface)
interface Handler{
    handle();
}

对于每种条件,我们都有一个新类来实现处理程序。
class CondOne implements Handler{
    handle(){
        //some code
    }
}

优点面向对象的方法,代码更易于维护。在不更改代码重要部分的情况下,添加新条件也很容易。

07-28 08:18