美文网首页
重构读书笔记-6_7-Substitute_Algorithm

重构读书笔记-6_7-Substitute_Algorithm

作者: MR_Model | 来源:发表于2019-06-13 09:44 被阅读0次

    重构第六章

    9.Substitute Algorithm(替换算法)

    将函数本体替换成为另一个算法

    Example:

    string foundPerson(String[] people) {
        for(int i =0;i<people.length;i++) {
            if(people[i].equals("Don")) {
                return "Don";           
            }
            if(people[i].equals("John")) {
                return "John";          
            }
            if(people[i].equals("Kent")) {
                return "Kent";          
            }
        }
        return "";
    }
    

    Analyse:

    在不断的需求叠加的时候,某些函数的进行方式,已经不再适合于具体的业务逻辑,或者有其他的方式可以更简单、更清晰的实现所需要的功能。
    此时,修改你的算法,使程序更加的简单
    
    使用情景:
    1.有更加简单的算法
    2.你的代码与即将新使用的程序库代码重复
    3.为了后续的可扩展性或者功能更改
    

    End:

    string foundPerson(string[] people) {
        List candidates = Arrays.asList(new string[]{"Don","John","Kent"});
        for(int i =0;i<people.length;i++) {
            if(candidates.contains(people[i]))
                return people[i];   
        }
        return "";
    }
    

    Conclusion:

    书中说使用Substitute Algorithm(替换算法)手法之前,首先要确定自己已经尽可能的分解了原先函数。替换一个巨大而复杂的算法是非常困难的,只有先将它分解为简单的小型函数,然后你才能很有把握的进行算法替换工作。
    
    我认为,想要使用Substitute Algorithm(替换算法)手法,还要保证你确实充分了解算法的整个构成,贸然替换一个你不熟悉的算法,可能会导致无数的问题,导致最终这个重构手法以失败告终。
    
    同时,尽量使得代码的耦合度降低,可以直接定位到问题所在,同时,不会由于修改了一个算法,而导致其他一系列奇奇怪怪的问题。
    

    注意

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

    相关文章

      网友评论

          本文标题:重构读书笔记-6_7-Substitute_Algorithm

          本文链接:https://www.haomeiwen.com/subject/itcjfctx.html