Duplicated Code (重复代码)思考
-
表现:相同的代码逻辑存在多个函数(类)中,如果需要修改逻辑,需要修改所有重复的地方。
-
缺点:需要修改多个地方,容易出现遗漏。修改影响范围广,经常无法准确评估需要涉及需要修改的点是否对其他业务有影响。
-
优化方案:
- 写单元测试(写好单测,是确保修改不出问题的第一道防火墙,保证重构是建立在充分了解代码逻辑的情况下进行的)
- 同一个类中不同方法内重复的代码逻辑,在idea中使用ctrl+alt+M抽出重复的代码逻辑,组成一个公用的方法。
错误的用法:逻辑太简单没必要单独写一个方法,而且不应该修改方法参数入参;且对于虽然Java传对象一般是引用传递,但是对于null会退化成值传递。
public class A { public void method1() { Object o = new Object(); // operate commonMethod(o); } public void method2() { Object o = new Object(); // operate commonMethod(o); } public void commonMethod(Object arg) { arg = null; } }
- 不同类中重复的代码逻辑,在idea中使用ctrl+alt+M抽出重复的代码逻辑,然后建立一个基类放置重复方法。
备注
重构方法 | idea重构快捷键 |
---|---|
提炼函数 | Ctrl+ALt+M |
提取委托 | Ctrl+ALt+Shit+T --> Extract Dealegate |
提取公共接口 | Ctrl+ALt+Shit+T --> Extract Intrface |
提取超类 | Ctrl+ALt+Shit+T --> Extract Intrface |