zoukankan      html  css  js  c++  java
  • 重构,改善既有代码的设计--总结篇

    重构,改善既有代码的设计--第一章感悟

    一、书中经典句子

    1.重构之前,首先检查自己是否有一套可靠的测试机制。这些测试必须有自我检验能力。

    2.面对长长的函数,需要分解,代码块越小越好管理。

     

    二、自己总结的句子

    1.修改长长的函数,找到变的参数和不变的参数,变的参数保留,不变的参数传入新函数。

    2.重构的时候使用快捷键重构之后,需要检查方法里面的参数,参数如果是不变的值如a=1;,直接在方法里面去定义就行了,这样就省去了传值的过程,效率更高。

    3.在重构函数之后,若函数的参数不属于当前类,并且函数中没使用当前类,需要把方法移动到参数所属的类去;如:A类里面的方法

    DoSomething(B b){b.getLabel(){}//do many things}; 
    需要移动到B类中去,

    4.重构之后需要检查下被重构的函数被多少个地方使用,保证无错

    5.对于接受一个方法返回值的参数如var a=B.getA();在这里a是完全没有必要的,可以直接把它给删除,在使用到a的地方替换为B.getA()

    6.为了使得方法看起来更加简洁,可以把方法中的变量和使用到变量的逻辑给抽取出来,形成一个方法,删除变量之后再使用到变量的地方用方法替代。

     

    7.在switch语句,最好不要在另一个对象的基础上运用switch语句。如果不得不使用,也应该在对象自己的数据上使用,而不是别人的数据上使用。比如:A类中的方法MethodA()中的switch里面使用的都是B类对象引用的数据如:case B.NUMBER;则需要把该方法转移到B类中去,以减少没必要的引用。

     

    重构,改善既有代码的设计--第二章感悟

    一、摘取章句

    1.改进设计的重要方向是消除重复代码。

    2.力求代码容易理解

    3.早起重构被描述为“擦掉窗户上的污垢,使你看得更远。”

    二、何时重构

    1.在给软件添加功能的时候重构

    2.修补错误时候重构:在重构中来找出系统的bug

    3.复审代码时候重构

    4.个人觉得在功能完成之后顺便重构会更好,因为在那个时候对代码还是很熟悉,还有可以在重构的时候去发现开发过程中遗留下来的bug

    重构,改善既有代码的设计--第四章感悟

    1.类应该包含它们的测试代码。每个类都应该有一个测试函数

     

    重构,改善既有代码的设计--第六章感悟

    以下摘自书中内容:

    一.对付过长函数的方法

    1.Extra Mehtod:就是把一段代码才从原先函数中提取出来,放入一个单独函数中。最大困难就是处理局部变量。(创造新函数要根据这个函数的意图来对它命名,以它“做什么”来命名,而不是以它“怎么做”命名。)

     

    二、内联函数

    当函数本体和名称同样清晰易懂需要合并两个函数:如:

    复制代码
        int _moreThaFiveLateDeliveriens=0;
        public int getRating() {
            return (moreThaFiveLateDeliveriens())?2:1;
        }
        
        boolean moreThaFiveLateDeliveriens()
        {
            return _moreThaFiveLateDeliveriens>5;
        }
    复制代码

    变成

        int _moreThaFiveLateDeliveriens=0;
        public int getRating() {
            return (_moreThaFiveLateDeliveriens>5)?2:1;
        }

     三、内联临时变量

    double basePrice=anOrder.basePrice();
    return (basePrice>1000);
    改为
    
    return (anOrder.basePrice()>1000);

    四、找变量做法

    1.找出只被赋值一次的临时变量;如果某个变量被赋值超过一次,考虑将它分割为多个变量,

    将该变量声明为final。

     2.将复杂表达式的结果放在一个临时变量,以此变量的名称来解释表达式用途。

    3.对那些被赋值不止一次的临时变量,需要针对每次赋值,创造一个独立、对应的临时变量。将新的临时变量定义为final类型。

    比如:int a=2*3(10+11);

         a=1*121*1111;

    换成:int a=2*3(10+11);

         int b=1*121*1111;

    重构,改善既有代码的设计--第七章感悟

    1.提炼类

    某个类做了应该由两个类做的事,需要建立一个新的类,将相关的字段和函数从旧类搬到新类。

    先搬较底层函数(就是给别人调用多过于调用别人的),再搬高层函数。

    重构,改善既有代码的设计--第八章感悟

    1.如果你看到一个数组的行为方式很像一个数据结构,就可以把数组变成对象

    private int aa,变成:  int aa;

                                public int GetAA() {return aa;}//好处:使得获取的数据更加有效

    作者:Elaine
    交流QQ:392989505
  • 相关阅读:
    mysql的悲观锁与乐观锁的实现
    java中int和Integer的区别
    node 爬取图片并下载 到本地
    vue-cli3.0使用及配置(部分)
    vue模块组件
    新版公共弹出层
    四面八方拖拽
    js常用功能技巧函数
    localStorage和cookie的跨域解决方案
    前端面试要点
  • 原文地址:https://www.cnblogs.com/ITGirl00/p/3776874.html
Copyright © 2011-2022 走看看