重构第十一章
9.Collapse Hierarchy(折叠继承体系)
superclass和subclass的区别不大,将他们合为一体。
Example:
class Employee...
public string getName(){
return _name;
}
...
private string _name;
class Salesman extends Employee...
public int getRate() {
return _rate;
}
private int _rate;
Analyse:
Employee class 和Salesman class之间只有一个函数有区别,其他的地方没有任何的不同,这个时候的继承可能会显得冗余。
End:
class Employee...
public string getName(){
return _name;
}
public int getRate() {
return _rate;
}
private int _rate;
private string _name;
Conclusion:
继承体系变得过分的复杂,重构继承体系后,往往是将函数和值域在superclass和subclass中上下移动。之后可能发现某个subclass并未带来该来的价值,一次需要将两者合并起来。
注意
重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
网友评论