zoukankan      html  css  js  c++  java
  • 重构第二天:移动方法

    原文地址:http://www.refactoring.com/catalog/moveMethod.html

    在类A中,当一个方法正在用,或者将要用到的功能和资源大部分存在于另一个类B中,而非A类中时,这时我们要考虑把这个方法移到B类中去。

    image

    举一个例子:

     1 class Project {
     2   Person[] participants;
     3 }
     4 
     5 class Person {
     6   int id;
     7   boolean participate(Project p) {
     8     for(int i=0; i<p.participants.length; i++) {
     9       if (p.participants[i].id == id) return(true);
    10     }
    11     return(false);
    12   }   
    13 }
    14 
    15 ... if (x.participate(p)) ...

    上面的例子中participate方法用到的都是Project类中的字段,所以我们决定把participate()方法移到Project类中。

    移动participate方法后:

     1 class Project {
     2   Person[] participants;
     3   boolean participate(Person x) {
     4     for(int i=0; i<participants.length; i++) {
     5       if (participants[i].id == x.id) return(true);
     6     }
     7     return(false);
     8   }   
     9 }
    10 
    11 class Person {
    12   int id;
    13 }
    14 
    15 ... if (p.participate(x)) ...

    这样做后,使得每个类的职责更加明确,清晰。

  • 相关阅读:
    Apache(文章测试)
    这是一篇Markdown手册
    Linux MySQL 8.0 忘记密码
    composer 自动加载源码解析
    Linux 连接 Internet
    PHP namespace、abstract、interface、trait使用介绍
    网络基础知识
    CentOS7安装Nginx、MySQL、PHP
    局域网内使用ssh连接两台计算机总结
    整数和浮点数的表示方法
  • 原文地址:https://www.cnblogs.com/peteryan/p/3805792.html
Copyright © 2011-2022 走看看