重构读书笔记-11_9-Collapse_Hierarchy

重构第十一章

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并未带来该来的价值,一次需要将两者合并起来。

注意

重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!

你可能感兴趣的:(重构读书笔记-11_9-Collapse_Hierarchy)