• 基于《重构》的代码重生之路


    我们为什么要重构

      你一定经历过,工作中,历史项目里面,一个函数几百行,变量命名不清晰,每每出现bug,用于修复bug的时间往往在看懂原开发者的意图之上。总之为了早点下班,为了更美好的生活。我们有必要写出清晰,优雅的代码,让我们自己开心,也让以后的开发者不在心中暗骂我们。

    编写思路

      本文主要以《重构》第二版为参照,基于现实开发中的实际问题进行解析,并加入部分实际开发代码(伪代码)进行描述,希望读者看完这篇文章,能够有所收获。

    1. 提炼函数(Extract Function)

      提炼函数,顾名思义就是将我们的代码块以函数的形式进行存放,这种方式最大好处就是避免过长的代码,同时良好的函数命名也可以让读者知道这部分代码的用意。那么我们如何判断是否需要提炼函数呢,《重构》作者提出的观点是,如果你需要花时间浏览一段代码才能弄清它到底在干什么,那么就应该将其提炼到一个函数中,并根据它要做的事情为其命名。(往往花了很多时间还是不能很好的理解代码的意图,那就是代码的坏味道),下面是实际的做法:

    1.   创造一个函数,根据函数的用途对其命名。
    2.       将待提炼的代码复制到新建的目标函数中。
    3.   仔细检查提炼代码,是否错在变量作用域问题,或者值的修改的问题,防止作用域污染。
    4.   处理有问题的变量,自测, 完成提炼。

      举个例子:

      1. 聚合逻辑相关代码,进行整合,防止同一逻辑代码相距过远。

    function test () {
      let a = 1;
      console.log('111111')      
      console.log(a);
    }
    
    // 实际调用a的时候在1111下面,虽然不影响代码执行,但是推荐如下操作
    
    function test () {
      console.log('111111')
      let a = 1;      
      console.log(a);
    }

    // 聚拢代码之后,就可以将逻辑相近的代码提炼出来

    function consoleA () {
      let a = 1;
      console.log(a);
    }

      

    ----------------

  • 相关阅读:
    C# List的深复制(转)
    asp.net core控制台项目运行
    进度条界面控件
    给窗体做遮罩(另类做法)
    显示列表控件(引用SourceGrid)
    TimeExit 界面无点击定时退出类
    TimeHelp 获取时间戳转换类
    复旦大学2016--2017学年第一学期高等代数I期末考试情况分析
    复旦大学高等代数历届每周一题汇总
    复旦高等代数 I(16级)每周一题
  • 原文地址:https://www.cnblogs.com/swearBM/p/16297212.html
Copyright © 2020-2023  润新知