zoukankan      html  css  js  c++  java
  • 《重构:改善既有代码的设计》读书笔记5 简化函数调用

    (1)Rename Method 函数改名

    一个真正的编程高手,起名的水平至关重要。

    (2)Add Parameter 添加参数

    (3)Remove Parameter 移除参数

    (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 checkSecurity(String[] people) {
    
          String found = foundMiscreant(people);
    
          someLaterCode(found);
    
      }

    -》

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

    在同一个动作中完成检查和赋值。这是否和Separate Query from Modifier 互相矛盾呢? 我曾经和Doug Lea 讨论过这个问题,并得出结论:两者并不矛盾,但你需要做一 些额外工作。将查询动作和修改动作分开来仍然是很有价值的。但你需要保留第三个函数来同时做这两件事。这个「查询-修改」函数将调用各自独立的查询函数和 修改函数,并被声明为synchronized 时。

  • 相关阅读:
    Nginx缓存[proxy cache、memcache]
    Nginx重写规则
    同步异步,阻塞非阻塞 和nginx的IO模型
    cookie & session
    HTTP状态码
    web简单的整体测试
    关于 如何用电脑的adb连接Mumu模拟器
    关于社保断交一个月的影响
    关于androidStudio的下载
    可以直接拿来用的android开源项目研究
  • 原文地址:https://www.cnblogs.com/zdcsmart/p/12511096.html
Copyright © 2011-2022 走看看