<分区>
我在其他人的 Java 代码中发现了一些可以从一些简单的重构中获益的常见代码模式。
您最喜欢的代码模式有哪些讨厌之处及其修复方法(如果不明显,原因是什么)?
我冒昧地用我自己最讨厌的几个问题来回答。
标签 java refactoring
<分区>
我在其他人的 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
}
}
优点。面向对象的方法,代码更易于维护。在不更改代码的重要部分的情况下添加新条件也很容易。
关于Java最喜欢的重构技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7174555/
相关文章:
java - JSP - 连接并将数据插入 MySQL 数据库
java - 使用 gradle 生成一个链接 LibGDX 项目 Assets 的 JAR 文件
eclipse - Eclipse 支持的用于删除父类(super class)依赖性的重构可能是什么?
java - 有什么方法可以重构这段代码或以紧凑的形式重写它吗?
java - 在 MySQL 中加密和解密文本(可能使用 Java)
java - 在 GWT CellTable ImageCell 中显示 base64 编码的图像