代码重构
程序员文章站
2022-05-19 17:08:02
...
去掉if else
通过定义一个枚举消除
定义一个枚举 然后遍历这个枚举,通过for来缩if else
工厂|接口|实现类
if(xxx){#xxx 抽成Factory的条件
//内容1 #将内容抽成Interface 然后 xxx内容1xxx implments Interface
} else if(xxx){
//内容2 #将内容抽成Interface 然后 xxx内容2xxx implments Interface
}
改写成
Xxxx.java
private Interface xxxintefacexxx;
xxxintefacexxx = InterfaceFactory.createXxxInterface();
xxxintefacexxx.deal();
if(condition)改写成Factory
public xxxintefacexxx InterfaceFactory.createXxxInterface(){
if(xxx){
xxxintefacexxx = new Impl();
}else if(xxx){
xxxintefacexxx = new Impl();
}
return xxxintefacexxx
}
//变种的写法
static Map<String, Operation> operationMap = new HashMap<>();
static {
operationMap.put("add", new Addition());
operationMap.put("divide", new Division());
operationMap.put("multiply", new Multiplication());
operationMap.put("subtract", new Subtraction());
operationMap.put("modulo", new Modulo());
}
public xxxintefacexxx InterfaceFactory.createXxxInterface(type){
return operationMap.get(type);
}
方法链的调用
Feature Envy(依恋情结)
如果一个函数为了计算某个值,需要用到几个类的数据,就把函数移到最多被此函数使用的数据的类中
某个类太大
可以考虑移到 父类中abstract 或 移到 子类中去