重构读书笔记-10_6-Replace_Parameter_with_Explicit_Methods

重构第十章

6.Replace Parameter with Explicit Methods(以明确函数取代参数)

你有一个函数,其内完全取决于参数值而采取不同反应。针对该参数的每一个可能值,建立一个独立函数。

Example:

static final int ENGINEER = 0;
static final int SALESMAN = 1;
static final int MANAGER = 2;
static Employee create(int type) {
    switch (type) {
        case ENGINEER:
            return new Engineer();
        case SALESMAN:
            return new Salesman();
        case MANAGER:
            return new Manager();
        default:
            throw new IllegalArgumentException(*Incurrect type code value);
    }
}

End:

static Employee createEngineer() {
    return new Engineer();
}
static Employee createSalesman() {
    return new Salesman();
}
static Employee createManager() {
    return new Manager();
}
//调用由
Employee kent = Employee.create(ENGINEER)
//替换为
Emplouee kent = Employee.createEngineer();

Conclusion:

Replace Parameter with Explicit Methods(以明确函数取代参数)和Paraneteruze Method(令函数携带参数)恰恰相反。使用本项重构手法的情景在于,程序内部以条件式检查参数值,并根据不同的参数值做出不同的反应。
这样首先可以得到[编译器代码校验的作用],而且接口更加的清楚。
但是,如果参数值不会对函数行为有太多的影响,就不应该使用Replace Parameter with Explicit Methods(以明确函数取代参数)方法。

注意

重构必须在有单元测试的情况下,保证之前的功能修改后不收影响。切记!!!
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • chapter 1 重构,第一个案例 1.1 什么时候需要重构 需要为程序添加一个特性,但代码结构无法使自己方便的...
    VictorBXv阅读 6,330评论 0 1
  • 第一章 重构,第一个案例 如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构那个...
    文浩读书阅读 4,359评论 0 0
  • 一,重构,第一个案例 这一章作者先用一个影片出租程序的案例,来演示重构的过程 每个Customer顾客可以租多部M...
    高稷阅读 13,716评论 1 19
  • 可以先看【推荐】:https://www.jianshu.com/p/d6ff54d72afb原文:http://...
    郭某人1阅读 5,861评论 0 0
  • [太阳]每日晨起感恩(2018.4.11) 感恩天父地母万物的滋养之恩; 感恩今生今世父母的养育之恩; 感恩生命历...
    美玲_阅读 799评论 0 0