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
  • 相关阅读:
    十三种基于直方图的图像全局二值化算法原理、实现、代码及效果。
    基于模糊集理论的一种图像二值化算法的原理、实现效果及代码
    双指数边缘平滑滤波器用于磨皮算法的尝试。
    《Single Image Haze Removal Using Dark Channel Prior》一文中图像去雾算法的原理、实现、效果(速度可实时)
    肤色检测算法
    肤色检测算法
    基于Simple Image Statistics(简单图像统计,SIS)的图像二值化算法。
    图像偏色检测算法,速度快,效果好,共享给大家。
    .net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
    一个简单的统计图像主颜色的算法(C#源代码)
  • 原文地址:https://www.cnblogs.com/ITGirl00/p/3776874.html
Copyright © 2011-2022 走看看