• 我的重构步骤:重构两份过程一致、中间数据类型不一致的超长函数


    本次重构应该先后有 8项小工作 需要做:

    一、分解函数,将超长函数分解为若干个小函数,然后在原函数中调用。(只分解一份,另一份先不要动)

    二、新建一个类, 把分解后的小函数 及被分解的原函数 复制到该类中, 并将被分解的原函数的访问修饰符 修改为public。

    三、处理新类,将新类中 访问不到的东西【因为代码是复制过来的,很有可能某些东西访问不到了】,借助类的全局变量或参数 处理掉。直到可以通过编译,即没有语法错误为止。

    四、建立一个新类的对象,并调用其中的public方法,将原有方法替换掉【此时需要注意步骤三中访问不到的数据,酌情处理】。

    五、注释掉不需要的代码。编译、调试。

    完成步骤五后, 重构超长函数就基本完成了。

    六、找出两份代码中 中间数据不一样的类型,然后用其公共“父类型”代替【例如:object】。

    七、处理类型转化,注意防止类型转换失败,还有空指针。

    八、处理第二份源码,需要从依次完成步骤 四、五、六、七。

    像这样的重构,最关键的是类型处理 和 类型转化,应该选用最恰当的类型,object 并不是最好的选择。

    重构 可以看作是一点一滴的复制修改代码,并伴随不断的编译调试,如果涉及到的逻辑有些复杂最好配合测试用例一起重构。

    ——————————————————————————————————————————————————————————

    ——————————————————————————————————————————————————————————分割线

    上面说的是重构的大致步骤,现在开始说重构的几个细节。

    一、分解超长函数时,分解局部变量的技巧 【代码特征,重复利用变量、一个变量将代表N种含义】

    代码大致如下:

    int index = 0;
    // 使用index...
    index = 15;
    // 使用index...
    index = -10;
    // 使用index...


    此时可以以三次index的赋值为分解点,分别分解为 index1 index2 index3三个变量,然后使用对应变量。此时就可以轻松分解函数了。

    二、寻找合适的 “父类型”

    string 和 TextBox 有公共的父类型,是 TextBox, TextBox有Text属性、可以记录string。【呵呵,一个例子就能说明问题了】

  • 相关阅读:
    GitLab基本用法
    SSH免密登录详解
    一文搞懂GitLab安装部署及服务配置
    初识:LevelDB
    Jenkins安装与Gitlab项目部署详解
    CentOS7的安装和配置
    C/C++语言的学习方向
    C语言atoi函数
    C语言整数的取值范围
    C语言scanf函数
  • 原文地址:https://www.cnblogs.com/08shiyan/p/3010805.html
Copyright © 2020-2023  润新知