美文网首页
重构读书笔记-10_4-Separate_Query_from_

重构读书笔记-10_4-Separate_Query_from_

作者: MR_Model | 来源:发表于2019-07-18 09:45 被阅读0次

    重构第十章

    4.Separate Query from Modifier(将查询函数和修改函数分离)

    某个函数既返回对象状态值,又修改对象状态,建立两个不同的函数,一个负责查询,一个负责修改。

    Example:

    String foundMiscreant(String people) {
        for(int i =0; i < people.length; i++) {
            if(people[i].equals("Don")) {
                sendAlert();
                return "Don";
            }
            if(people[i].equals("John")) {
                sendAlert();    
                return "John";
            }
        }
        return "";
    }
    
    void chechSecurity(String people) {
        String found = foundMiscreant(peolpe);
        someLateCode(found);
    }
    

    End:

    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";
            }
        }
        return "";
    }
    void sendAlertr(String people) {
        if(!foundPerson(people).equals(""))
        sendAlert();
    }
    void checkSecurity(String[] people) {
        sendAlertr(people);
        String found = foundPerson(people);
        someLaterCode(found);
    }
    

    Conclusion:

    如果你遇到一个[既有返回值又有副作用]的函数,就应该试着将查询动作从修改动作中分割出来,使用Separate Query from Modifier(将查询函数和修改函数分离)方法,可以达到:有返回值的函数,不会有看得见的副作用的结果。

    注意

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

    相关文章

      网友评论

          本文标题:重构读书笔记-10_4-Separate_Query_from_

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